我有這個真正基本的SQL代碼,我已經複製了哪些排名10人的分數,它似乎在phpmyadmin網站上工作正常,雖然在我的網站上它返回此消息:SQLSTATE [HY000]:一般錯誤sql結果顯示在phpmyadmin,但不會將記錄返回到我的網站
我的猜測是出現此消息是因爲SET函數不允許返回記錄。
所以我的解決方案是改變我複製的SQL代碼做同樣的事情,但寫在我的網站上工作不同。
Click here to see the SQL code in phpMyAdmin
我知道很多你會被要求在PHP代碼所以在這兒呢。
$servername = "mysql12.000webhost.com";
$username = "corey";
$password = "pass";
$dbname = "database";
$sql = "SQL CODE PLACED HERE. PASTED BELOW";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
$rows = new RecursiveArrayIterator($stmt->fetchAll());
echo json_encode($rows);
}
catch(PDOException $e){
echo "Error: " . $e->getMessage();
}
$conn = null;
和SQL代碼在這裏:
SET @count =0;
SELECT *
FROM (SELECT * , @count := @count +1 AS rank
FROM montsbattlefront
WHERE RacesWon >=0
ORDER BY RacesWon DESC
) AS t
WHERE rank
BETWEEN 0
AND 100000
的PHP代碼工作完全正常。 SQL代碼是我遇到的最多問題。 我嘗試用其他類似BEGIN END的SET替換SET,以允許本地變量和SET的使用,儘管這僅僅打開了比以前更多的問題,因爲phpmyadmin並未真正支持DELIMITER。有人知道一個簡單的解決方案來編寫簡單的SQL代碼來做我想做的事嗎?我不是SQL專家,我只知道基礎知識。
例如,由於某些原因,我可以使用COUNT()或ROW_NUMBER()來代替使用@count,ROW_NUMBER也不能與phpmyadmin一起使用。如果任何人都能找到解決我的基本問題的辦法,我會非常高興。
問候,
科瑞S.
太感謝你了!是!好吧,這太棒了。刪除SET並將此行編輯爲FROM montsbattlefront,(SELECT @count:= 0)t就完成了。 –