php网上错误示例
时间:2010-01-29 来源:lengyuzlg
if (validate($_POST) == "OK") {
echo "<p>Thank you for registering!</p>";
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: <br />";
$sqlAll = "select * from users";
$resultsAll = mysql_query($sqlAll);
}
} else {
echo "<p>There was a problem with your registration:</p>";
作者以为$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)就可以了。
相关阅读 更多 +