PHP函数更新MYSQL表
我正在尝试创建一个PHP函数来更新SQL表,以避免反复重用代码。然而,每当我运行该函数时,总是会出现“SQL数据库错误”。奇怪的是,每当我使用复制/粘贴这段代码并将其单独放置(而不是作为函数)时,都不会出现任何类型的错误。怎么了?为什么会这样PHP函数更新MYSQL表,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试创建一个PHP函数来更新SQL表,以避免反复重用代码。然而,每当我运行该函数时,总是会出现“SQL数据库错误”。奇怪的是,每当我使用复制/粘贴这段代码并将其单独放置(而不是作为函数)时,都不会出现任何类型的错误。怎么了?为什么会这样 $servername = "localhost"; $dBUsername = "username"; $dBPassword = "password"; $dBName = "dat
$servername = "localhost";
$dBUsername = "username";
$dBPassword = "password";
$dBName = "databasename";
$connection = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);
function updateSQL ($table, $row, $value, $where, $arg) {
$SQL = '
UPDATE `".$table."`
SET `".$row."`=?
WHERE `".$where."`=?';
$stmt = mysqli_stmt_init($connection);
if (!mysqli_stmt_prepare($stmt, $SQL)) {return "SQL database error."; exit();}
else {
mysqli_stmt_bind_param($stmt, "ss", $value, $arg);
if (mysqli_stmt_execute($stmt)) {return "success";}
else {return mysqli_error($connection);}
}
}
$connection
不在此范围内设置(除非您将其用作全局变量,我们在代码中看不到这一点,而且这将是一种不好的做法)
如果updateSQL()
是对象的方法,则可以在构造函数(或任何其他合适的位置)中设置$this->connection
属性,然后在updateSQL()
方法中访问它
否则,将其作为参数传递给
updateSQL()
函数,传递方式与传递$table
、$row
和其他参数的方式相同。顺便说一句,设置列中的值。WHERE指定行。您可以使用包含数据库实现的许多PHP框架中的一个,避免像这样的重新发明脚手架。@danblack我在哪里可以找到这样的东西?但是,我不是一个PHP程序员。我看到的大多数SO帖子都提到了前4名(如果有的话)。我没有包括$connection,因为我知道这不是问题所在。正如我在最初的帖子中所说,如果我删除“functionupdatesql($table,$row,$value,$where,$arg){}”部分,代码就可以正常工作。函数中的某些内容是抛出错误的原因。@John,然后请更新您的问题,使其提供完整的可复制代码。完成!你现在应该可以看到了。这个答案是正确的。您有一个范围问题。您需要打开错误报告,因为PHP会告诉您该错误正在发生。