在mysql更新语法中,columname可以变量吗?

时间:2012-06-13 15:05:12

标签: php mysql syntax

我想更新表中的任何列值。如果我回显$ q它获取变量但它不会更新并且不会回显mysql错误。那我怎么能这样做呢?

 function up($name, $value, $id){     

 $q='UPDATE Table SET '.$name.'='.$value.' WHERE ID="'.$id.'"';
     $r=mysql_query($q, $conn);
     if(!$r){
     echo('Could not update data: ' . mysql_error());
   } else{ echo "Updated data successfully\n"; } 
 }

1 个答案:

答案 0 :(得分:1)

变量$q在被发送到MySQL之前被解释,因此您可以在运行时使列名称以及其他所有内容都是动态的。该字符串的最终值是MySQL将看到的。

如果您的行没有更新而且您没有收到错误,那么您的查询在某种程度上是不正确的。确保WHERE子句中的所有条件都正确无误。查看行是否受到影响的更好方法是使用mysql_affected_rows()

else{ echo "Updated data successfully\n"; } 

应该是

else if(mysql_affected_rows() !== 0){ echo "Updated data successfully\n"; } 

仅供参考,您应该考虑从they will soon be going away.

迁移出mysql_ *函数