用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'!='另一个“字符串”。