php - 如何使用bind_param从数据库中删除?

标签 php mysql mysqli prepared-statement

我有以下方法将数据插入到数据库中的表中

function database_preparedModify($sql, $types, &$insertId, ...$value)
  {
      $statement =  mysqli_prepare(database_link(), $sql);

      $statement->bind_param($types, ...$value);

      $statement->execute();

      $insertId = $statement->insert_id;

      return $statement->affected_rows;
  }

此函数的有效使用(工作正常)如下:

private function saveError(someError $error)
    {
        $sql = 'INSERT INTO stackoverflowErrors (dateTimeTest, errorURL, clientInfo, accountID, actions, message) 
                VALUES (?, ?, ?, ?, ?, ?)';
        $insertId = 0;
        database_preparedModify($sql, 'ssssss', $insertId, $error->getTime(), $error->errorURL(), $error->getClientInfo(), $error->getAccountID(), $error->getAction(), $error->getMessage());
    }

其中方法 getTime()errorURL()...等位于另一个类中,与此问题并不真正相关。

我的问题是,如何使用方法database_preparedModify()从数据库中删除而不是插入?我尝试过以下方法:

$filename = 'some valid filename';
$feed["id"] = $validID;
$insertId = 0;
$sql = "DELETE FROM `".$config_databaseTablePrefix."table1` WHERE filename = '".database_safe($filename)."'";

        database_preparedModify($sql,'s',$insertId, ' ');

$sql = "DELETE FROM `".$config_databaseTablePrefix."table2` WHERE id = '".database_safe($feed["id"])."'";

        database_preparedModify($sql,'s',$insertId, ' ');

但我收到此错误:

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement

最佳答案

您需要在查询中使用占位符。

$sql = "DELETE FROM `".$config_databaseTablePrefix."table1` WHERE filename = ?";
database_preparedModify($sql,'s',$insertId, $filename);

$sql = "DELETE FROM `".$config_databaseTablePrefix."table2` WHERE id = ?";
database_preparedModify($sql,'s',$insertId, $feed["id"]);

关于php - 如何使用bind_param从数据库中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56395535/

相关文章:

php - httpd libphp5.so ldap错误

php - 有效地从数据库中读取给定记录 ID 数组的多条记录

mysql导入转储文件ubuntu 10.10

mysql - 使用 2 个表的复杂更新查询 SQL

php - mysql联结可以吗?

php - 更新 PHP 准备绑定(bind)参数

php - 如何对带有法语口音的数组进行 JSON 编码?

php - Magento:如何在管理面板中使用 JS 显示标准错误/成功消息?

php - MySQL 比较和删除大表~30m 记录

php - 将 MySQL 连接传递给函数