我有以下方法将数据插入到数据库中的表中
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/