PHP函数更新MYSQL表

PHP函数更新MYSQL表,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试创建一个PHP函数来更新SQL表,以避免反复重用代码。然而,每当我运行该函数时,总是会出现“SQL数据库错误”。奇怪的是,每当我使用复制/粘贴这段代码并将其单独放置(而不是作为函数)时,都不会出现任何类型的错误。怎么了?为什么会这样 $servername = "localhost"; $dBUsername = "username"; $dBPassword = "password"; $dBName = "dat

我正在尝试创建一个PHP函数来更新SQL表,以避免反复重用代码。然而,每当我运行该函数时,总是会出现“SQL数据库错误”。奇怪的是,每当我使用复制/粘贴这段代码并将其单独放置(而不是作为函数)时,都不会出现任何类型的错误。怎么了?为什么会这样

$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会告诉您该错误正在发生。