用PHP更新数据库中的数据

用PHP更新数据库中的数据,php,Php,我有一个简单的脚本,它应该更新一列中的变量,其中用户登录等于某个登录 <?PHP $login = $_POST['login']; $column= $_POST['column']; $number = $_POST['number']; $link = mysqli_connect("localhost", "id3008526_root", "12345", "id3008526_test"); $ins = mysqli_query($link, "UPDATE test_t

我有一个简单的脚本,它应该更新一列中的变量,其中用户登录等于某个登录

<?PHP
$login = $_POST['login'];
$column= $_POST['column'];
$number = $_POST['number'];

$link = mysqli_connect("localhost", "id3008526_root", "12345", "id3008526_test");

$ins = mysqli_query($link, "UPDATE test_table SET '$column' = '$number' WHERE log = '$login'");
if ($ins)
    die ("TRUE");
else
    die ("FALSE");
?>
但它不起作用。它给了我-假。我的一个列名是w1,如果我用w1替换代码中的“$column”,它就可以正常工作。有什么建议吗?

只需删除引号:“$column”=应该是$column=

您的代码已为SQL注入打开,请使用准备好的语句。

只需删除引号:“$column”=应该是$column=


您的代码已为SQL注入打开,请使用准备好的语句。

您的错误可能与$column被设置为带单引号的字符串有关?因为它返回false,这表明您有某种MySQL错误


要了解else块上的错误消息是什么,请尝试使用mysqli_error$link,而不是因为错误消息而死亡-这应该会显示错误消息

您的错误可能与将$column设置为带单引号的字符串有关?因为它返回false,这表明您有某种MySQL错误

若要在else块上找出错误消息是什么,请尝试使用mysqli_error$link,而不是因为错误消息而死亡-这将显示错误消息

更改此更新测试表集'$column'='$number',其中log='$login'

要更新此测试表,请设置“.$column”。=.$number。其中log='.$login.'

更改此更新测试表集'$column'='$number',其中log='$login'


要更新此测试表,请设置“.$column”。=.$number。其中log='.$login.'

如果删除$column周围的引号无效,可以尝试PDO方法。以下是片段:

function insertUser($column, $number, $login) {
try 
{ 
    $connect = getConnection(); //db connection
    $sql = "UPDATE test_table SET $column = '$number' WHERE log = '$login'";
    $connect->exec($sql); 
    $connect = null; 
 } catch (Exception $ex) { 
     echo "EXCEPTION : Insert failed : " . $ex->getMessage(); 
 } 
 }

function getConnection() { 
 $servername = "localhost"; 
 $dbname = "my_db"; 
 $username = "root"; 
 $password = "12345"; 

 try { 
     $connection = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 } catch (Exception $ex) { 
     echo "EXCEPTION: Connection failed : " . $ex->getMessage(); 
 } 

     return $connection; 
 } 
关于$number,我不确定$number的数据类型是否需要引号,所以请尝试使用引号或不使用引号,看看哪一个有效


getConnection函数位于单独的PHP文件中,它将包含在任何调用数据库连接的PHP文件中。

如果删除$column周围的引号不起作用,可以尝试PDO方法。以下是片段:

function insertUser($column, $number, $login) {
try 
{ 
    $connect = getConnection(); //db connection
    $sql = "UPDATE test_table SET $column = '$number' WHERE log = '$login'";
    $connect->exec($sql); 
    $connect = null; 
 } catch (Exception $ex) { 
     echo "EXCEPTION : Insert failed : " . $ex->getMessage(); 
 } 
 }

function getConnection() { 
 $servername = "localhost"; 
 $dbname = "my_db"; 
 $username = "root"; 
 $password = "12345"; 

 try { 
     $connection = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 } catch (Exception $ex) { 
     echo "EXCEPTION: Connection failed : " . $ex->getMessage(); 
 } 

     return $connection; 
 } 
关于$number,我不确定$number的数据类型是否需要引号,所以请尝试使用引号或不使用引号,看看哪一个有效


getConnection函数位于单独的PHP文件中,它将包含在任何调用数据库连接的PHP文件中。

SQL中没有错误,只是返回了0个更新的行,因为'string'!='另一个_字符串。SQL中没有错误,只是返回了0个更新的行,因为'string'!='另一个“字符串”。