问题描述
<?PHP
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mysb";
// Create connection
$conn = new MysqLi($servername,$username,$password,$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection Failed: " . $conn->connect_error);
}
?>
然后,我尝试从另一个PHP页面执行此语句,并且仅当在另一个select语句之前对update语句进行编码时,它才有效:
<?PHP
require_once (getcwd()."connection.PHP");
function callme(){
if (isset($_GET['check'])) {
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "UPDATE Table SET IpAddress = ? WHERE Key = ?";
$stmt = $GLOBALS['conn']->prepare($sql);
//if (!$stmt)
//die("Error occurred");
$stmt->bind_param("ss",$ip,$g);
$stmt->execute();
}
}
if (isset($_GET['g']) && !empty($_GET['g'])){
$g = $_GET['g'];
callme(); //called before the select statement below
$sql = "SELECT T FROM Table WHERE Key = ?";
$stmt = $GLOBALS['conn']->prepare($sql);
//if (!$stmt)
//die("Error occurred");
$stmt->bind_param("s",$g);
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
}
?>
这正常工作。 ps:所有查询都是正确的,并且已经过手动测试。
奇怪的是,如果我尝试在callme()
语句之后像这样调用select
函数:
<?PHP
require_once (getcwd()."connection.PHP");
function callme(){
if (isset($_GET['check'])) {
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "UPDATE Table SET IpAddress = ? WHERE Key = ?";
$stmt = $GLOBALS['conn']->prepare($sql);
//if (!$stmt)
//die("Error occurred");
$stmt->bind_param("ss",$g);
$stmt->execute();
}
}
if (isset($_GET['g']) && !empty($_GET['g'])){
$g = $_GET['g'];
$sql = "SELECT T FROM Table WHERE Key = ?";
$stmt = $GLOBALS['conn']->prepare($sql);
//if (!$stmt)
//die("Error occurred");
$stmt->bind_param("s",$g);
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
callme();//called after the select statement above
}
?>
我收到以下错误:Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in /Users/user/Sites/test.PHP:13 Stack trace: #0 /Users/user/Sites/test.PHP(32): callme() #1 {main} thrown in /Users/user/Sites/test.PHP on line 12
第12行正好是$stmt->bind_param("ss",$g);
。
我在这里想念什么?
已解决:
$stmt->free_result();
您的陈述后。已经回答并建议重复的问题有点离题。请查看PHP Commands Out of Sync error和https://dba.stackexchange.com/questions/130019/commands-out-of-sync-you-cant-run-this-command-now以获得更好的理解。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)