我编写了一个 PHP 函数,它接受两个输入参数并更新数据库表。
function updateTable($a, $b){
$query = "UPDATE myTable
SET dataUpload=CURDATE(), lastUpdate=NOW()
WHERE Code IN(SELECT Code FROM myTable2 WHERE QR = ?) AND aid=?";
$stmt=$connectiondb->stmt_init();
if (!($stmt = $connectiondb->prepare($query))) {
echo "Prepare failed: (" . $connectiondb->errno . ") " . $connectiondb->error;
$firephp->log("prepare failed in update myTable");
}
if (!$stmt->bind_param('si',$a, $b)) {
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
$firephp->log("bind failed in update myTable");
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
$firephp->log("execute failed in update myTable");
}
$stmt->free_result();
$stmt->close();
}
地点:
$connectiondb = new mysqli($hostname, $username, $password, $database);
如果我在 PHP 代码中调用此函数,例如以这种方式:
updateTable('923TRU234',1100);
它不起作用,但如果我在 MySQL 数据库上调用更新语句:
UPDATE myTable
SET dataUpload=CURDATE(), lastUpdate=NOW()
WHERE Code IN(SELECT Code FROM myTable2 WHERE QR = '923TRU234') AND aid=1100
它有效!
最佳答案
您似乎没有正确引用您的连接。您将 $connectiondb
视为全局变量,但看起来您是在函数外部定义的。您不在函数内使用命令 global $connectiondb;
。因此,PHP 不知道您的连接,并将 $connectiondb
视为未定义。
参见this page on variable scopes in PHP有关其工作原理的更多信息。
此外,如果您能提供比“它不起作用”更多的信息,那么将更容易帮助您排除故障。发生了什么?
关于php - 使用 mysqli 更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408336/