我编写了一个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语句:
UPDATE myTable
SET dataUpload=CURDATE(), lastUpdate=NOW()
WHERE Code IN(SELECT Code FROM myTable2 WHERE QR = '923TRU234') AND aid=1100
它有效!
答案 0 :(得分:2)
看起来你的连接不正确。您将$connectiondb
称为全局,但看起来您在函数之外定义它。您不在函数内使用命令global $connectiondb;
。因此,PHP不了解您的连接,并将$connectiondb
视为未定义。
有关其工作原理的详情,请参阅this page on variable scopes in PHP。
此外,如果您可以提供比“不起作用”更多的光线,那么帮助您进行故障排除会更容易。 发生什么?