我正在学习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查询”和“使用数据库抽象层”是互斥的。 –