如何解决PHP准备查询的奇怪行为
<?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 举报,一经查实,本站将立刻删除。