如何从PHP文件中正确更新MySQL数据?

时间:2015-04-23 16:52:57

标签: php mysql sql sql-update

我想使用PHP更新数据库中的字段。我写了这段代码,工作正常。 var2的值为0,更新后其值为1。 我想使用字段var2作为PHP变量,因此我可以将它用作if条件。 使用if条件我想更新var2如果它的值是0,并且如果var2的值是1则重定向到其他php文件。

<?php
session_start();
$con=mysql_connect("localhost","root","");
mysql_select_db("database",$con);
$sql = "SET SQL_MODE = ''";
mysql_query($sql,$con);
$sql = "UPDATE table SET var2=1 WHERE var1 =    '".$_SESSION['user']."'";

if (){}


mysql_query($sql,$con);
if(mysql_error() != ""){
    echo $sql." ".mysql_error();
}
mysql_close($con);
?>

我试过

$abc = $_POST['var2'];
$sql = "UPDATE table SET "$abc"=1 WHERE var1 =    '".$_SESSION['user']."'";

但它对我不起作用,我得到了下一条消息“解析错误:语法错误,第10行的C:\ xampp \ htdocs \ egresadoslunes \ finalizar.php中的意外T_VARIABLE”

2 个答案:

答案 0 :(得分:1)

您不能只在字符串文字后面添加变量。您应该使用.运算符明确地连接它:

$sql = "UPDATE table SET " . $abc . "=1 WHERE var1 = '".$_SESSION['user']."'";

或者将其内联在字符串中:

$sql = "UPDATE table SET ${abc}=1 WHERE var1 = '".$_SESSION['user']."'";

强制性评论:
使用这种字符串操作技术会使您的代码对sql-injection攻击开放。您应该考虑使用prepared statements代替。

答案 1 :(得分:0)

检查行是否受到影响。

$sql = "UPDATE table SET var2=1 WHERE var2=0 and  var1 =    '".$_SESSION['user']."'";
$result=(mysql_query);
if( mssql_rows_affected($result) > 0){
     //var 2 == 0
}
else{
     //var 2 != 0
}