mysql_fetch_array返回false

时间:2013-02-08 23:52:40

标签: php mysql

这是我的代码:

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

$method = $_POST["method"]; //dropdown box
$category = $_POST["category"]; //dropdown box
$email = mysql_real_escape_string($_POST["email"]);
$companyname = mysql_real_escape_string($_POST["companyname"]);
$phone = mysql_real_escape_string($_POST["phone"]);
$address = mysql_real_escape_string($_POST["address"]);
$state = mysql_real_escape_string($_POST["state"]);
$zip = mysql_real_escape_string($_POST["zip"]);

$salt = $email;
$length = 10;
$temporarypassword =  
substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),  
0, $length);
$temp_encrypted_password = sha1($salt.$temporarypassword);

$addcompany = mysql_query("INSERT INTO company (`method`, `category`,  
`email`, `password`, `companyname`, `phone`, `address`, `state`, `zip`, `ratingcount`, 
`ratingscore`, `usage`, `date`)
VALUES 
('$method','$category','$email','$temp_encrypted_password',
'$companyname','$phone','$address','$state','$zip','0','0','0',CURDATE()) ")
or die(mysql_error());

if (mysql_fetch_array($addcompany)) {

$to = "$email";
$subject = "Your Temporary Password";
$message = "Your temporary password is: <b>$temporarypassword;</b>. Sign in and   
update your password as soon as possible.";
$header = "From: email@gmail.com\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html\r\n";
mail($to,$subject,$message,$header);

$message = "Company Added";

}

}
}

因此,sql语句执行得很好,并按我的意愿输入到我的数据库中。但是,if $ addcompany返回true的IF语句必须返回false,因为语句内部没有任何内容执行。我在我的网站的其他部分以这种方式使用这个检查mysql_fetch_array,它运行正常,所以我很好奇为什么它不会在这种情况下返回。

仅供参考我正在为那些会说它的人调查PDO。大声笑我今天已经在以前的帖子中为它做了扩充。

感谢您的时间,我很感激。

2 个答案:

答案 0 :(得分:0)

php-doku声明,对于所有INSERT语句mysql_query都返回一个布尔值,无论语句是否成功执行。 所以你不需要

if (mysql_fetch_array($addcompany)) {

但只是

if ($addcompany) {

答案 1 :(得分:0)

mysql_fetch_array不是用于插入的if条件,而是用于 select 语句的while循环,它将遍历查询的每个结果。如果没有结果,那么脚本将不会进入循环。

检查php.net底部的示例:http://php.net/manual/en/function.mysql-fetch-array.php

这里你只需要if ($addcompany) {,没有fetch_array