我遇到了$ updatequery SQL的問題,這個php腳本在ajax調用中接受3個post變量,第一個是前面正確答案的數組,這裏不相關。根據前一個問題是否被正確回答,$ win是0或1,$ id是單詞的主要ID(這是一個單詞匹配遊戲,就像韓國的flashcards一樣)。 $ updatequery旨在爲每個單詞建立統計數據,有多少人能夠正確判斷並確定該單詞有多難,只需記錄點擊次數以及多少次正確回答。如果我回答錯誤的話,它會在數據庫中準確地反映出來:1點擊,沒有勝利。然而,我是否正確地回答說,它表示0次點擊,沒有數據庫中的勝利......出了什麼問題?!?!?!MySQL語法?應該很簡單!
<?php
$dbcon = mysql_connect("localhost", "tulesblo_tules", "Gromit554?") or die(mysql_error());
mysql_select_db("tulesblo_koreangame", $dbcon) or die(mysql_error());
mysql_query("SET NAMES utf8");
$correctarray = explode(",", $_POST["correct"]);
$win = (int)$_POST["win"];
$id = (int)$_POST["id"];
$correct = "";
$y = 1;
if ($id > 0) {
$updatequery = "UPDATE words SET clicks=clicks+1 AND wins=wins+ '$win' WHERE id= '$id'";
mysql_query($updatequery) or die(mysql_error());
}
foreach($correctarray as $x){
$correct .= " id != " . $x;
if ($y == count($correctarray)) {break;}
$correct .= " AND"; $y++;
}
//pick 4 random pairs
$filter = count($correctarray) > 1?"WHERE" . $correct:"";
$querystring = "SELECT * FROM words ".$filter." ORDER BY RAND() LIMIT 4";
$query = mysql_query($querystring);
//turn them into multiarray
$x = 0;
$multiarray = array();
while ($result = mysql_fetch_assoc($query)){
$multiarray[$x] = array(
"id" => $result['id'],
"korean" => $result['korean'],
"english" => $result['english']
);
$x++;
}
array_push ($multiarray,$win,$id);
//send as JSON to client
//array_push($multiarray, $querystring, count($correctarray));
echo json_encode($multiarray);
?>
我可以推薦的是逐步調試 - 將您的查詢記錄到文件,您會發現錯誤。 – Yaronius 2011-03-22 16:34:34
我建議你也閱讀一下關於SQL注入的問題,並看看如何使用mysqli,這樣你就可以使用準備好的語句並綁定變量。 – 2011-03-22 16:52:07
感謝Yaronius,我沒有從mysql_error()得到任何有用的東西,我知道變量正確地到達那裏,因爲我已經用php輸出它們,我怎樣才能更密切地監視MySQL正在做什麼?如何將查詢記錄到文件? – 2011-03-22 17:05:46