2013-02-19 109 views
0

我试图在PHP中创建一个更新函数,但是记录似乎并没有随着更新而改变。我创建了一个JSON对象来存放传递给这个文件的值,并且根据我运行的Firebug Lite控制台,这些值被输出得很好,所以它在sql方面可能有些问题。任何人都可以发现问题吗?我会很感激帮助!在PHP中不更新的SQL表格

<?php 

$var1 = $_REQUEST['action']; // We dont need action for this tutorial, but in a complex code you need a way to determine ajax action nature 
$jsonObject = json_decode($_REQUEST['outputJSON']); // Decode JSON object into readable PHP object 

$name = $jsonObject->{'name'}; // Get name from object 
$desc = $jsonObject->{'desc'}; // Get desc from object 
$did = $jsonObject->{'did'};// Get id object 


mysql_connect("localhost","root",""); // Conect to mysql, first parameter is location, second is mysql username and a third one is a mysql password 
@mysql_select_db("findadeal") or die("Unable to select database"); // Connect to database called test 


$query = "UPDATE deal SET dname = {'$name'}, desc={'$desc'} WHERE dealid = {'$did'}"; 
$add = mysql_query($query); 
$num = mysql_num_rows($add); 

if($num != 0) { 

echo "true"; 

} else { 

echo "false"; 

} 

?> 
+0

请注意'{'$ name'}'和''{$ name}''之间有区别。也许你的WHERE条件不正确。 – EmCo 2013-02-19 18:11:29

回答

1

我相信你在不当使用大括号反引号

UPDATE deal 
SET dname = {'$name'}, `desc`= {'$desc'} .... 
         ^----^--------------------------here 
+0

我们有一个赢家!非常感谢!谁知道它会是那样的小事。 我知道,它之前就引起了我的注意。我有非常基本的SQL经验,所以在我的教学开始时我就这样做了,但是一旦我把PHP方面的东西放下来并传递变量,我就打算更深入地了解mysqi函数! 非常感谢您的时间凯尔! – user2025934 2013-02-19 18:14:45

+0

@ user2025934没问题。我很高兴能够提供帮助。那些花括号总是显得混乱。 – Kyle 2013-02-19 18:48:36

1

你需要逃避reserved words in MySQLdesc你需要使用mysql_affected_rows()更新后不mysql_num_rows

+1

更好的是,你需要在做任何事之前检查错误。 – Xnoise 2013-02-19 18:08:05

+0

林新编码,甚至从不知道保留字在哪里,但感谢把它引起我的注意:)我现在通过你的链接看看。 不幸的是没有解决我的问题后,然而=/ – user2025934 2013-02-19 18:09:22

1

。单引号应该去他们的外:

"UPDATE deal SET dname = {'$name'}, desc={'$desc'} WHERE dealid = {'$did'}" 

变为

"UPDATE deal SET dname = '{$name}', desc='{$desc}' WHERE dealid = '{$did}'" 

在一个侧面说明,使用任何mysql_ *函数是不是真的好安全明智的。我建议您查看php的mysqlipdo扩展。