分类:
2010-01-29 14:22:25
if (validate($_POST) == "OK") {
echo "Thank you for registering!
";
db_connect();
$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 is already a user with that name:
";
$sqlAll = "select * from users";
$resultsAll = mysql_query($sqlAll);
}
} else {
echo "There was a problem with your registration:
";作者以为
$result返回FALSE,作者对
mysql_query的返回值,理解错误。返回的是个标识符。所以看做TRUE。
mysql_query() 仅对
SELECT,SHOW,EXPLAIN 或 DESCRIBE
语句返回一个资源标识符,如果查询执行不正确则返回
FALSE。对于其它类型的 SQL
语句,mysql_query()
在执行成功时返回 TRUE,出错时返回 FALSE。非
FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。
很有可能一条查询执行成功了但并未影响到或并未返回任何行。if (!$result)改成
if (mysql_num_rows($result) == 0)就可以了。