相同连接中的连续查询不起作用
问题描述:
以下代码正常工作,但行$connection->query('call user_create(145552, \'[email protected]\');');
未在数据库中创建用户。相同连接中的连续查询不起作用
function updateFacebook($id) {
$connection = mysqli_connect('localhost', 'root', '', 'databasename');
$count = $connection->query('call user_by_facebook_read(' . $id . ');')->num_rows;
if ($count == 0) {
$request = \Slim\Slim::getInstance()->request();
$body = $request->getBody();
$json = json_decode($body);
$token = $json->token;
$facebook = new Facebook(array(
'appId' => 'value',
'secret' => 'value',
'cookie' => true
));
$facebook->setAccessToken($token);
$facebook->api('/me/feed', 'post', array(
'message' => 'message',
'picture' => 'https://www.google.com.br/images/srpr/logo4w.png',
'link' => 'https://www.google.com.br',
'description' => 'description',
'name' => 'name',
'caption'=> 'caption'
));
$connection->query('call user_create(145552, \'[email protected]\');');
}
$connection->close;
$json = json_encode(array(
'r' => true
));
echo $json;
}
如果我运行下面的代码也工作得很好:
$connection = mysqli_connect('localhost', 'root', '', 'databasename');
$connection->query('call user_create(145552, \'[email protected]\');');
$connection->close;
如果我关闭$count
后的连接和前再次打开它user_create调用它也适用。
发生了什么事?
答
您需要对结果运行->close()
,但是您放弃了该结果。所以:
$result = $connection->query(..);
$count = $result->num_rows;
$result->close();
and after CALL()s in MySQLi it seems to need this:
$connection->next_result();
你知道,如果查询实际上是正在运行?换句话说,你确定你已经到了那行代码? – Revent 2013-04-29 17:20:40
Yeh。我确定。看看我的编辑。 – lolol 2013-04-29 17:25:57
你需要在结果上运行' - > close()',但是你放弃了。所以:'$ result = $ connection-> query(..); $ count = $ result-> num_rows; $ result-> close();'。 – Wrikken 2013-04-29 19:27:55