簡單的問題wheres錯誤?PHP MySQL比較兩列並按順序返回?
$result = mysql_query("
SELECT * FROM orders
WHERE Username='$username'
AND completed > ordered
ORDER BY completed ASC
LIMIT 1
") or die(mysql_error());
沒有錯誤也沒有數據。
簡單的問題wheres錯誤?PHP MySQL比較兩列並按順序返回?
$result = mysql_query("
SELECT * FROM orders
WHERE Username='$username'
AND completed > ordered
ORDER BY completed ASC
LIMIT 1
") or die(mysql_error());
沒有錯誤也沒有數據。
好吧抱歉打擾大家,但它是簡單的錯字通知「>」它應該是「<」因爲完成不能比命令就是這樣。
$result = mysql_query("SELECT * FROM orders WHERE Username='$username' AND completed > ordered ORDER BY completed ASC LIMIT 1") or die(mysql_error());
您所查詢的語法可能是正確的,但你的算法可能不是:(並確保你綁定您的查詢對$username
減輕SQL注入攻擊)
SELECT * FROM orders
WHERE Username = ?
AND completed > ordered
ORDER BY completed ASC
LIMIT 1
你有一個orders
表,它可能包含...它包含什麼?它不能是一個日期戳,因爲全部訂單將在完成後完成。
所以它必須是一個INT?並且您希望選擇那些有更多訂單履行比(AND completed > ordered
),這是希望在您的公司不可能的。嘗試completed < ordered
。
你是對的,那是我的錯誤。需要休息一下:) – Kaido 2012-08-01 14:18:42
這應該是'WHERE Username =?',因爲在SQL中放入任意用戶數據是** NOT **是一個好主意。 – tadman 2012-08-01 14:54:26
@tadman我認爲downvote是你。如果仔細觀察,您會發現我的代碼不是一個建議的更正,而是對OP原始代碼的重新格式化,只是爲了清晰起見(這是純粹的SQL語句,甚至不是PHP片段)。你是對的,但除此之外還有很多需要解決的問題。我只在OP的問題範圍內作出迴應。 – msanford 2012-08-01 15:13:31
什麼是錯誤? – 2012-08-01 14:00:43
SQL使用正確的語法;你可以驗證指定的'$用戶名'有訂單嗎? – newfurniturey 2012-08-01 14:01:12
我看不到任何語法錯誤。你的$ username變量可能是空的。試着['print()'](http://php.net/manual/en/function.print.php)來檢查。 – 2012-08-01 14:02:37