Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何应用mysqli_free_result()?_Php_Mysqli - Fatal编程技术网

Php 如何应用mysqli_free_result()?

Php 如何应用mysqli_free_result()?,php,mysqli,Php,Mysqli,我将命令移出同步错误,这似乎通常通过释放以前查询的结果来解决,但我不确定如何将其应用到我的场景中 我曾尝试在php脚本的不同位置释放其他查询的结果,但错误没有解决。我发现的示例有一个格式为$result=$mysqli->query的查询,然后释放$result。我没有使用这种风格的结果,但如果我应该,我愿意修改我的方法 //检查活动检查表是否存在,如果不存在,则创建它 $activeExist=$mysqli->queryCALL测试'active'; 而$row=$activeExist->

我将命令移出同步错误,这似乎通常通过释放以前查询的结果来解决,但我不确定如何将其应用到我的场景中

我曾尝试在php脚本的不同位置释放其他查询的结果,但错误没有解决。我发现的示例有一个格式为$result=$mysqli->query的查询,然后释放$result。我没有使用这种风格的结果,但如果我应该,我愿意修改我的方法

//检查活动检查表是否存在,如果不存在,则创建它 $activeExist=$mysqli->queryCALL测试'active'; 而$row=$activeExist->fetch\u行{ echo$行[0]; 错误日志$row[0]。\n\n,3,/var/tmp/my-errors.log; 如果$row[0]==2{ //$activeExist->free; $sql=如果不存在则创建表活动 id varchar10非空主键, title varchar100选择“$activeID”作为“id”,选择“$realname”作为“title”;; $mysqli->query$sql; dbTableGen.$sql中的error\u logActive then语句。\n\n,3,/var/tmp/my-errors.log; error\u logActive.$mysqli->errno..$mysqli->error。\n\n,3,/var/tmp/my-errors.log; //$mysqli->queryINSERT到活动值“$activeID”和“$realname”; } 否则{ dbTableGen中的error\u logActive else语句。\n\n,3,/var/tmp/my-errors.log; $mysqli->queryINSERT到活动值“$activeID”和“$realname”; } } } //mysqli_free_结果; mysqli_close$mysqli; 预期结果:创建一个名为active的表,如果该表不存在,则插入值;如果该表已经存在,则仅插入值


实际结果:命令不同步;您现在不能运行此命令

我担心安全性/稳定性,因为您直接将变量写入迭代查询中,但通常只缓存调用结果,然后触发单个查询

此外,您应该始终尽可能减少到数据库的总行程。我建议只执行一个INSERT查询,而不是执行多个INSERT查询

$activeExist = $mysqli->query("CALL TEST('active')");
$call_results = $activeExist->fetch_all(); // or loop if you don't have this driver installed

foreach ($call_results as $row) {
    echo $row[0];
    error_log($row[0] ."\n\n", 3, "/var/tmp/my-errors.log");
    if ($row[0] == "2") {
        //$activeExist->free();
        $sql = "CREATE TABLE IF NOT EXISTS active (
                  id varchar(10) NOT NULL PRIMARY KEY,
                  title varchar(100)) SELECT '$activeID' AS 'id', '$realname' AS 'title';";
        $mysqli->query($sql);
        error_log("Active then statement from dbTableGen " . $sql . "\n\n", 3, "/var/tmp/my-errors.log");
        error_log("Active (" . $mysqli->errno . ") " . $mysqli->error ."\n\n", 3, "/var/tmp/my-errors.log");
        //$mysqli->query("INSERT INTO active VALUES ('$activeID', '$realname')");
    } else {
        error_log("Active else statement from dbTableGen" . "\n\n", 3, "/var/tmp/my-errors.log");
        $mysqli->query("INSERT INTO active VALUES ('$activeID', '$realname')");
    }
}

正在调用的过程如下所示:创建过程TESTIN tablename VARCHAR15 BEGIN IF exists从信息\u SCHEMA.TABLES中选择table_name,其中table_name类似tablename,然后选择1;否则选择2;如果结束;END$$`为糟糕的格式表示歉意。学习…如果这不能解决问题,请告诉我,我会调整。