0

次のコードは問題なく動作していますが、この行$connection->query('call user_create(145552, \'a@a.com\');');はデータベースにユーザーを作成していません。

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, \'a@a.com\');');

    }

    $connection->close;

    $json = json_encode(array(
        'r' => true
    ));

    echo $json;     

}

次のコードを実行すると、問題なく動作します。

$connection = mysqli_connect('localhost', 'root', '', 'databasename');
$connection->query('call user_create(145552, \'a@a.com\');');
$connection->close;

の後に接続を閉じて$count、 user_create 呼び出しの前にもう一度開くと、それも機能します。

何が起こっている?

4

1 に答える 1

1

結果を実行する必要があります->close()が、それを破棄しました。そう:

 $result = $connection->query(..);
 $count = $result->num_rows;
 $result->close();

そして、MySQLi の CALL()s の後、これが必要なようです:

 $connection->next_result();
于 2013-04-29T21:11:19.653 に答える