0

これが私のコードです:

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 ステートメントは問題なく実行され、必要に応じてデータベースに入力されます。ただし、$addcompany が true を返す場合の IF ステートメントは、ステートメント内で何も実行されないため、false を返す必要があります。私は自分のサイトの他の部分で mysql_fetch_array のこのチェックをこのように使用していますが、正常に動作するので、この場合に返されない理由に興味があります。

参考までに、私はそれを言う人のためにPDOを調べています。笑 今日の前の投稿ですでにリーミングされています。

お時間をいただき、ありがとうございます。

4

2 に答える 2

0

mysql_fetch_arrayは、挿入のif条件ではなく、クエリの各結果を通過するselectステートメントのwhileループで使用することを目的としています。結果がない場合、スクリプトはループに入りません。

php.netの下部にある例を確認してください:http://php.net/manual/en/function.mysql-fetch-array.php

ここで必要なif ($addcompany) {のはfetch_arrayではありません

于 2013-02-08T23:58:02.777 に答える
0

php-dokuは、ステートメントが正常に実行されたかどうかにかかわらず、すべての INSERT ステートメントに対して mysql_queryがブール値を返すことを宣言しています。だからあなたはする必要はありません

if (mysql_fetch_array($addcompany)) {

しかし、単純に

if ($addcompany) {
于 2013-02-08T23:56:28.967 に答える