2013-02-19 62 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擴展。