2011-11-21 59 views
0

这个查询有什么问题?它似乎对我来说是正确的:PHP中的MySQL查询 - 不正确?

mysql_query("UPDATE culture SET cult_desc=$culture WHERE cult_id is $UID"); 

修改它,NetBeans仍然给我一个错误。这是我的页面总代码:

$culture = $_POST["culture"]; 
if (isset($_POST["id"])) 
    $UID = $_POST["id"]; 
    mysql_query("UPDATE culture SET cult_desc='$culture' WHERE cult_id=$UID"); 
else 
    mysql_query("INSERT INTO culture 
      VALUES(cult_desc='$culture')"); 
+0

为什么你觉得有什么不对? – str

+0

,因为显然有错误 – matthiasmullie

回答

1

看到新编辑的代码,您的更新语句现在是正确的,但你的INSERT语句现在是错误的。

尝试:

mysql_query("INSERT INTO culture (culture_desc) 
      VALUES ('$culture')"); 
2

$ culture的价值是什么? 如果它是一个字符串,则需要用引号封装它。

同样的事情$ UID。

而且,“是”在哪里,条件应该是“=”

另外:看我们这个代码。确保$文化和$ UID不能包含任何恶意值(从用户如恶意输入)

+0

这是一个内部管理系统,所以不会有恶意值。 –

2

cult_desc可能字符串,所以需要来包装“”

mysql_query("UPDATE culture SET cult_desc='$culture' WHERE cult_id = $UID"); 
0
$sql = "UPDATE 'culture' SET `cult_desc` = '$culture' WHERE `cult_id` = '$UID'"; 

基本上,你重新使用而不是=

0

根据$ culture和$ UID的数据类型,您可能会缺少引号。 Cult_desc听起来像一个字符串,因此$文化应该用引号引起来。

0

你应该经常检查mysql_error.http://php.net/manual/en/function.mysql-error的输出。

我通常也使用=而不是'is',并将所有输入数据都用引号括起来。例如

$ sql =“UPDATE”culture'SET cult_desc ='“。$ culture。”'WHERE cult_id ='“。$ UID。”'“;

1

如果SET cult_desc是一个字符串,然后

mysql_query("UPDATE culture SET cult_desc='$culture' WHERE cult_id = $UID"); 

mysql_query("UPDATE culture SET cult_desc=$culture WHERE cult_id = $UID") 
1

你的问题的{和}如果else语句

$culture = $_POST["culture"]; 
if (isset($_POST["id"])){ 
    $UID = $_POST["id"]; 
    mysql_query("UPDATE culture SET cult_desc='$culture' WHERE cult_id=$UID"); 
}else{ 
    mysql_query("INSERT INTO culture 
      VALUES(cult_desc='$culture')"); 
}