php - 使用 mysqli 更新表

标签 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 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/

相关文章:

php - 更新关系内部的关系有很多值

php - mysql中如何连接两个表的记录

mysql - Mac OS X Lion 上的 MAMP 2.0.1 与 Ruby on Rails 3.2.0

php - mysqli 将位和整数作为字符串返回

PHP 我的选择不起作用?

mysql - 棘手的 SQL 连接查询

php - 我可以通过将整个 MySQL 查询作为参数传递来使用 mysql_real_escape_string 函数吗?

php - 是 php-mysql : update column with different values depending on condition involving PHP variable

php - Mysqli 使用准备好的语句获取数组

php - PHP 中运行时动态绑定(bind)变量