public function testQuery() { $query = 'SELECT * FROM :table'; $expected = 'SELECT * FROM language'; $db = $this->getMockBuilder(Db::class)->disableOriginalConstructor()->getMock(); $db->expects($this->once())->method('getConventionTableName')->will($this->returnArgument(0)); $db->expects($this->once())->method('query')->with($this->equalTo($expected)); $table = new Table($db, 'language'); $table->query($query); }
<?php /** * 初始化所有计划任务 */ include_once "common.php"; $conn = new Table("local189"); $conn->query("TRUNCATE TABLE `tianyunzi`.`360_jihua`"); $api = "https://api.e.360.cn/account/clientLogin"; $postData = array("format" => "json", "username" => "郑州悉知", "passwd" => "7232275XZgcw"); $md = md5("7232275XZgcw"); $key = "15fdeq7buepvssh8z899rusa6ynxufyn"; $m = new Xcrypt(substr($key, 0, 16), 'cbc', substr($key, 16, 16)); $postData["passwd"] = $m->encrypt($md, 'hex'); $header = array(); $header[] = "serveToken:" . microtime(1); $header[] = "apiKey:1kg8tunzfxt8zvzpf53vjr5es45lvszh"; $str = curlPost($api, $header, $postData); if (!isset($str["accessToken"])) { exit("用户登录验证失败!\n"); } else { echo "用户登录验证成功!\n"; } /*查询下所有的推广计划 */ $api = "https://api.e.360.cn/2.0/account/getCampaignIdList"; $header[] = "accessToken:" . $str["accessToken"]; $header[] = "sessionToken:" . $str["sessionToken"]; $params = array("format" => "json"); $str = curlPost($api, $header, $params); if (!isset($str["campaignIdList"])) { exit("无法获取到任何推广计划id\n");
public function __call($method, $args = null) { $method_order = explode('OrderBy', $method); preg_match('/^(select)|(update)|(delete)|(count)/', $method_order[0], $matches); if (!empty($matches[0])) { $class = get_class($this); $query = Table::constructQuery($class, $matches[0], $method, $args); switch ($matches[0]) { case 'count': return reset(reset(Table::query($query))); case 'select': if (empty($args[self::ARRAY_SINGLE]) && empty($args[self::OBJECT_SINGLE]) && empty($args[self::ARRAY_MULTIPLE]) && empty($args[self::OBJECT_MULTIPLE])) { if (strstr($method_order[0], 'All') === false) { $args[self::OBJECT_SINGLE] = true; } else { $args[self::OBJECT_MULTIPLE] = true; } } foreach (self::$_inject_modes as $mode) { if (!empty($args[$mode])) { $inject_mode = $mode; break; } } $result = Table::query($query); if (!empty($result)) { switch ($inject_mode) { case self::ARRAY_SINGLE: return reset($result); case self::OBJECT_SINGLE: $object = new $class(reset($result)); if (ENABLE_LOG && $this->_logging) { Event::log($object, Event::BROWSE, '', Session::getUser()); } return $object; case self::ARRAY_MULTIPLE: $collection = array(); foreach ($result as $struct) { $collection[] = $struct; } return $collection; case self::OBJECT_MULTIPLE: $collection = array(); foreach ($result as $struct) { $collection[] = new $class($struct); } return $collection; } } else { switch ($inject_mode) { case self::ARRAY_SINGLE: case self::ARRAY_MULTIPLE: case self::OBJECT_MULTIPLE: return array(); case self::OBJECT_SINGLE: return null; } } case 'update': $primary_key = constant($class . '::PRIMARY'); if (empty($this->{$primary_key})) { if (method_exists($this, '_onInsert')) { $this->_onInsert(); } } else { if (method_exists($this, '_onUpdate')) { $this->_onUpdate(); } } $args = get_object_vars($this); foreach ($args as $arg => $val) { if (substr($arg, 0, 1) == '_') { unset($args[$arg]); } } $query = Table::constructQuery($class, $matches[0], $method, $args); $result = Table::query($query); $primary = constant($class . '::PRIMARY'); if (empty($this->{$primary})) { $this->{$primary} = $result; try { if (ENABLE_LOG && $this->_logging) { Event::log($this, Event::CREATE, '', Session::getUser()); } } catch (Exception $exc) { } } else { try { if (ENABLE_LOG && $this->_logging) { $event = Event::get()->selectOneByEntityIdAndEntityAndActionOrderByDescTimestamp($this->{$primary}, $class, Event::BROWSE); if (!empty($event)) { if ($this->_isDirty()) { $event->timestamp = time(); $event->action = Event::MODIFY; $event->initial = str_replace(array("'", '"'), array('', "'"), $this->_initial); $event->update(); } else { $event->delete(); } } } } catch (Exception $exc) { } } return $result; case 'delete': if (empty($args)) { $primary = constant($class . '::PRIMARY'); $args = array($this->{$primary}); $method = 'deleteOneBy' . str_replace(' ', '', ucwords(str_replace('_', ' ', $primary))); } if (method_exists($this, '_onDelete')) { $this->_onDelete(); } $query = Table::constructQuery($class, $matches[0], $method, $args); try { if (ENABLE_LOG && $this->_logging) { Event::log($this, Event::DELETE, $this->_initial, Session::getUser()); } } catch (Exception $exc) { } return Table::query($query); } } }
public static function getUserByUsername($name) { $q = sprintf("SELECT * FROM users\n\t\t\t\t\t WHERE username='******'", $name); return Table::query($q, new User()); }
<?php /** * 初始化推广计划 */ $conn = new Table("local189"); $conn->query("TRUNCATE TABLE `tianyunzi`.`baidu_jihua`"); $data = array("header" => array("token" => "1f888ce6fb38730a14a6afe7437fc3b4", "username" => "郑州悉知", "password" => "GCWgcd7232275"), "body" => array("campaignIds" => null, "campaignFields" => array("campaignId", "campaignName", "status"))); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.baidu.com/json/sms/service/CampaignService/getCampaign"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); //$data是每个接口的json字符串 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不加会报证书问题 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //不加会报证书问题 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8')); $result = curl_exec($ch); $result = json_decode($result, true); if (empty($result) || !isset($result["body"]["data"])) { exit("无法获取baidu计划数据\n"); } foreach ($result["body"]["data"] as $value) { $conn->insert(array("id" => $value["campaignId"], "name" => $value["campaignName"], "status" => $value["status"]), "tianyunzi.baidu_jihua"); echo "新增新计划 " . $value["campaignName"] . "\n"; } class Config { public static $dbArr = array('localhost' => array('192.168.12.70', "root", "123456", "test"), 'online' => array('192.168.2.163', "gongchangdb", "gongchangdb7232275", "caijiproductinfo"), 'info' => array('192.168.2.101', 'hangye', 'hangye7232275', 'hangye'), 'local' => array('192.168.8.18', 'root', 'gc7232275', 'gcoperate'), "local170" => array('192.168.8.170', "root", "gc7232275", "test"), 'local189' => array('192.168.8.189', 'gongchang', 'gongchang123', 'tianyunzi'), 'main' => array('read.mysql.ch.gongchang.com', 'gcwork', 'gcwork7232275', 'catesearch'), 'maind' => array('write.mysql.ch.gongchang.com', 'gcwork', 'gcwork7232275', 'catesearch'), "product" => array("pdinfo.read.mysql.ch.gongchang.com", "gccontent", "gccontent7232275", "caijiproductinfo"), 'club' => array('55651c3e54ae6.sh.cdb.myqcloud.com', 'cdb_outerroot', 'ScIwH*3fEB(', 'cn_clubnew', 8287), 'txonline' => array('172.17.18.4', 'gckeyword', 'WVwVaxADjX9z3PHd', 'gckeyword'));
$mysqlRs = $clubObj->findAll("select * from pre_forum_thread where tid > '{$id}' order by tid asc limit 100"); if (empty($mysqlRs)) { exit("所有数据处理完毕!"); } foreach ($mysqlRs as $value) { $id = $value["tid"]; echo $id . "\n"; if (!in_array($value["fid"], $fids)) { continue; } if ($value["authorid"] != "2563479") { continue; } var_dump($value); echo "\n"; $clubObj->query("delete from pre_forum_thread where tid = '" . $value["tid"] . "'"); } } class Config { public static $dbArr = array('localhost' => array('192.168.12.70', "root", "123456", "test"), 'online' => array('192.168.2.163', "gongchangdb", "gongchangdb7232275", "caijiproductinfo"), 'info' => array('192.168.2.101', 'hangye', 'hangye7232275', 'hangye'), 'local' => array('192.168.8.18', 'root', 'gc7232275', 'gcoperate'), "local170" => array('192.168.8.170', "root", "gc7232275", "test"), 'local189' => array('192.168.8.189', 'gongchang', 'gongchang123', 'gckeyword'), 'main' => array('read.mysql.ch.gongchang.com', 'gcwork', 'gcwork7232275', 'catesearch'), 'maind' => array('write.mysql.ch.gongchang.com', 'gcwork', 'gcwork7232275', 'catesearch'), "product" => array("pdinfo.read.mysql.ch.gongchang.com", "gccontent", "gccontent7232275", "caijiproductinfo"), 'club' => array('172.17.18.2', 'root', 'gc7232275', 'cn_clubnew', 3306), 'txonline' => array('172.17.18.4', 'gckeyword', 'WVwVaxADjX9z3PHd', 'gckeyword')); public static $cateApiUrl = 'http://cate.ch.gongchang.com/cate_json/'; } class Table { public $conn = ''; public $config; public function __construct($connName) { $db = Config::$dbArr; $this->config = $db[$connName];
<?php /** * 初始化所有关键词 */ $id = 0; /* 清空下所有的关键词 */ $conn = new Table("local189"); $conn->query("TRUNCATE TABLE `tianyunzi`.`baidu_keywords`"); $conn->close(); while (1) { $conn = new Table("local189"); $groupArr = $conn->findAll("select * from tianyunzi.baidu_group where id > '{$id}' order by id asc limit 100"); if (empty($groupArr)) { echo "所有的单元已经过完\n"; exit; } foreach ($groupArr as $value) { $id = $value["id"]; /* 获取当前单元下的所有关键词 */ $keywordArr = getKeyword($value["id"]); if (empty($keywordArr) || !isset($keywordArr["body"]["data"])) { echo "计划[" . $value["jihuaname"] . "],单元[" . $value["groupname"] . "],没有查到关键词\n"; continue; } foreach ($keywordArr["body"]["data"] as $value1) { if (!isset($value1["pcDestinationUrl"])) { continue; } /* 插入数据库 */ $insertArr = array("id" => $value1["keywordId"], "campaignId" => $value1["campaignId"], "adgroupId" => $value1["adgroupId"], "keyword" => $value1["keyword"], "pcDestinationUrl" => $value1["pcDestinationUrl"]);
<?php /** * 初始化所有的关键词组 */ include_once "common.php"; $conn = new Table("local189"); $conn->query("TRUNCATE TABLE `tianyunzi`.`360_group`"); $jihuaArr = $conn->findAll("select * from tianyunzi.360_jihua limit 100"); $api = "https://api.e.360.cn/account/clientLogin"; $postData = array("format" => "json", "username" => "郑州悉知", "passwd" => "7232275XZgcw"); $md = md5("7232275XZgcw"); $key = "15fdeq7buepvssh8z899rusa6ynxufyn"; $m = new Xcrypt(substr($key, 0, 16), 'cbc', substr($key, 16, 16)); $postData["passwd"] = $m->encrypt($md, 'hex'); $header = array(); $header[] = "serveToken:" . microtime(1); $header[] = "apiKey:1kg8tunzfxt8zvzpf53vjr5es45lvszh"; $str = curlPost($api, $header, $postData); if (!isset($str["accessToken"])) { exit("用户登录验证失败!\n"); } else { echo "用户登录验证成功!\n"; } $header[] = "accessToken:" . $str["accessToken"]; $header[] = "sessionToken:" . $str["sessionToken"]; foreach ($jihuaArr as $value) { $api = "https://api.e.360.cn/2.0/group/getIdListByCampaignId"; $params = array("format" => "json", "campaignId" => intval($value["id"])); $str = curlPost($api, $header, $params); if (!isset($str["groupIdList"])) {
protected static function getAllItemsByTable(Table $instance, $orderby = 'name') { $q = sprintf("SELECT * FROM %s ORDER BY %s", $instance->table['table'], $orderby); return Table::query($q, $instance, $is_multi = true); }
<?php /** * 初始化推广单元 */ $conn = new Table("local189"); $conn->query("TRUNCATE TABLE `tianyunzi`.`baidu_group`"); $id = 0; while (1) { $jihuaArr = $conn->findAll("select * from tianyunzi.baidu_jihua where id > '{$id}' order by id asc limit 100"); if (empty($jihuaArr)) { exit("所有计划已经过完\n"); } foreach ($jihuaArr as $value) { $id = $value["id"]; /* 获取当前计划下单元信息 */ $groupArr = getGroup($value["id"]); if (empty($groupArr) || !isset($groupArr["body"]["data"])) { echo "计划 " . $value["name"] . " 下没有获取到单元信息\n"; continue; } foreach ($groupArr["body"]["data"] as $value1) { echo "新增计划[" . $value["name"] . "],单元[" . $value1["adgroupName"] . "]\n"; $conn->insert(array("id" => $value1["adgroupId"], "groupname" => $value1["adgroupName"], "jihuaId" => $value1["campaignId"], "jihuaname" => $value["name"], "status" => 31), "tianyunzi.baidu_group"); continue; } } } function getGroup($jihuaId) { $data = array("header" => array("token" => "1f888ce6fb38730a14a6afe7437fc3b4", "username" => "郑州悉知", "password" => "GCWgcd7232275"), "body" => array("adgroupFields" => array("adgroupId", "campaignId", "adgroupName", "status"), "ids" => array($jihuaId), "idType" => 3));
public function getAnswers($start_date = null, $end_date = null) { if (!empty($start_date) && !empty($end_date)) { $answers = Table::query('SELECT * from ' . UserAnswer::TABLE . ' WHERE a.user_id = ' . $this->user_id . ' AND a.timestamp >= "' . $start_date . '" AND a.timestamp <= "' . $end_date . '" ORDER BY a.timestamp DESC'); } else { if (!empty($start_date)) { $answers = Table::query('SELECT * from ' . UserAnswer::TABLE . ' WHERE a.user_id = ' . $this->user_id . ' AND a.timestamp >= "' . $start_date . '" ORDER BY a.timestamp DESC'); } else { if (!empty($end_date)) { $answers = Table::query('SELECT * from ' . UserAnswer::TABLE . ' WHERE a.user_id = ' . $this->user_id . ' AND a.timestamp <= "' . $end_date . '" ORDER BY a.timestamp DESC'); } else { $answers = Table::query('SELECT * from ' . UserAnswer::TABLE . ' WHERE a.user_id = ' . $this->user_id . ' ORDER BY a.timestamp DESC'); } } } $this->_answers = $answers; }
public static function getByUidAndSid($uid, $sid) { $q = "SELECT * FROM user_token\r\n\t\t\t WHERE uid={$uid} AND sid='{$sid}'"; return Table::query($q, new UserToken()); }