使用mysqli更新表

时间:2013-12-05 18:59:04

标签: php mysql mysqli sql-update

我编写了一个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

它有效!

1 个答案:

答案 0 :(得分:2)

看起来你的连接不正确。您将$connectiondb称为全局,但看起来您在函数之外定义它。您不在函数内使用命令global $connectiondb;。因此,PHP不了解您的连接,并将$connectiondb视为未定义。

有关其工作原理的详情,请参阅this page on variable scopes in PHP

此外,如果您可以提供比“不起作用”更多的光线,那么帮助您进行故障排除会更容易。 发生什么