2012-05-17 22 views
1

我目前正在處理代碼,在數據庫表中一次更新一行。但是,只有奇數行正在更新,而偶數行沒有被更新。爲什麼我的查詢只更新奇數行

這是我的PHP:

<?php 
require_once ("connect.php"); 
$id = $_GET['id']; 
$title = $_POST['title']; 
$description = $_POST['description']; 

$query = "UPDATE tbl_shows SET shows_title='$title', shows_description='$description' WHERE shows_id='$id'"; 
$result = mysql_query($query); 

if ($result) { 
    header ("Location: shows.php?=success"); 
    exit(); 
} else { 
    echo "<p>Still doesn't work</p>"; 
     exit(); 
} 
?> 

我已經印刷我的$ id,$ title和$描述變量,它們都顯示,他們應該。

如何更改我的代碼,以便更新偶數和奇數行。

編輯:

呼應的$ id,$標題,$說明和$查詢顯示了這兩個奇數和偶數行相同。

什麼mysql_error()輸出:

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊正確的語法附近使用(從該行的數據的一部分,在這裏出現,關閉錯誤的削減)WHE」在行1

查詢:

UPDATE tbl_shows SET shows_title='Title is here', shows_description='Description is here' WHERE shows_id='2' 
+3

** **警告你的代碼有SQL注入漏洞。 –

+0

您是否收到任何錯誤?如果您爲奇數編號查詢回顯$ id和$ query,會發生什麼情況? – j08691

回答

1

你的代碼有簡單的sql注入漏洞,這可能會導致你看到的無意中的錯誤。舉例來說,如果你的$的描述是這樣的:

Best movie ever!!! You're going to love it! 

...那麼你的級聯查詢將是這樣的:

UPDATE tbl_shows SET shows_title='Title is here', shows_description='Best movie ever!!! You're going to love it!' WHERE shows_id='2' 

這樣做的問題,是在you're撇號是怎麼回事導致show_description的值終止,並且查詢的其餘部分對SQL不再有意義。

最起碼,使用mysql_real_escape_string()消毒添加到您的查詢的變量,而更好的是,使用PHP的PDO庫

+1

修復它,謝謝! – akari

0

什麼可能導致偶數項目不會從您發佈的內容更新,這並不是很明顯。我建議你使用mysql_error函數來顯示當$ result爲false時得到的確切錯誤信息。根據PHP文檔,mysql_result只在錯誤時返回false,所以這是一個很好的跡象表明有些奇怪的可能會出現。

+0

我已經使用了mysql_error函數,它說我有一個語法錯誤,但它中途切斷,所以我不能確切地看到在哪裏。 – akari

+0

@akiri您可以使用查詢和相應的錯誤消息來編輯原始帖子嗎?我認爲這會讓我們更好地幫助你。 MySQL錯誤在出現錯誤後幾乎總是有elipses,並且只向您顯示查詢中與錯誤最相關的部分。 – EmmanuelG

相關問題