我正在學習PHP閱讀PHP手冊和學習不同的教程。我用mysql_query遇到了一個問題。我試圖用PHP從表單中將用戶數據插入到數據庫中。 mysql_query應該返回false,因爲用戶名在數據庫中不存在,但根據結果我得到它返回true,並且沒有任何數據被輸入到數據庫中。我使用mysql_query錯誤還是正在使用!結果不正確?PHP的Mysql數據插入
$sql = "SELECT * FROM users WHERE username='".$_POST["name"]."'";
$result = mysql_query($sql)
if (!$result) {
$sql = "INSERT INTO USERS (username, email, password) VALUES
('".$_POST["name"]."', '".$_POST["email"]."', '".$passwords[0]."')";
$result = mysql_query($sql);
if ($result) {
echo "It's entered!";
} else {
echo "There's been a problem: " . mysql_error();
}
} else {
echo "There's already a user with that name: <br />";
$sqlAll = "SELECT * FROM users";
$resultsAll = mysql_query($sqlAll);
$row = mysql_fetch_array($resultsAll);
while ($row) {
echo $row["username"]." -- ".$row["email"]."<br />";
$row = mysql_fetch_array($result);
}
}
由於您正處於學習過程中,現在是灌輸良好編碼習慣的絕佳時機。正如以下某些答案中所建議的那樣,請閱讀[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)並考慮使用抽象層(如PDO)來訪問數據。儘管知道如何使用mysql_query()及其同類代碼是很好的,但任何面向公共的代碼都應儘可能安全。 –
@Justin:當他學習時,我不會建議對SQL進行抽象。一旦他厭倦了SQL,那麼就該開始學習ORM等了。 – 2011-11-01 16:58:50
@Muu:儘管抽象層增加了一些複雜性,但最終還是在編寫SQL查詢(無論是將它們傳遞給'mysql_query ()'或'$ dbh-> prepare()')。我不認爲「學習如何編寫SQL查詢」和「使用數據庫抽象層」是互斥的。 –