变量值没有传递给函数?

时间:2011-06-17 17:43:09

标签: php mysql sql

我有一个将数据发送到mysql数据库的php文件。当我尝试发送数据时得到这个:

  

ERROR! EMPTY RESULTINSERT INTO电子邮件   (第一,最后,完整,电子邮件,   CountryCoude,电话,公司,序列号)   价值观('','','   ' 'benespitz @ gmail.com' ,,,' Webscan的,   公司“” TEST   mySQL的')BenSpitzbenespitz@gmail.com+1303-459-4521Webscan,   Inc.TEST mySQL

从输出中可以看出,我输入insert函数的变量不是空的,而是在查询中发送的值是。这是为什么?

php文件的非机密部分:

insert($firstname,$lastname,$email,$countrycode,$phonenumber,$companyname,$serialnumber);
$result = mysql_query("SELECT DISTICT * FROM email");
if (empty($result)) {
    echo "ERROR! EMPTY RESULT";
}
else {
    print_r($result);
}
echo "INSERT INTO email (First, Last, Full, Email, CountryCoude, Phone, Company, Serial)
    VALUES ('".$first."','".$last."','".$first." ".$last."','".$email."',".$code.",".$phone.",'".$company."','".$serial."')";
echo $firstname.$lastname.$email.$countrycode.$phonenumber.$companyname.$serialnumber;
?>
</div>
</div>
</body>
<?php
function insert ($first, $last, $email, $code, $phone, $company, $serial) {
    mysql_query("INSERT INTO email (First, Last, Full, Email, CountryCoude, Phone, Company, Serial)
    VALUES ('".$first."','".$last."','".$first." ".$last."','".$email."',".$code.",".$phone.",'".$company."','".$serial."')");
}
?>

1 个答案:

答案 0 :(得分:1)

empty是一个PHP功能,可以检查特定条件下的PHP变量。

知道MySQL库以及您的$result只是资源句柄的事实。 (实际上,$result永远不会“空”;它始终是一个对象,它始终是一个资源句柄,即使它是一个空结果集的句柄。)

而不是:

if (empty($result)) {
    echo "ERROR! EMPTY RESULT";
}

写:

if (!mysql_num_rows($result)) {
    echo "ERROR! EMPTY RESULT";
}

同样,print_r($result)不会按照您的想法行事。查看您正在使用的库的文档,并使用其API。有加载的示例有关如何迭代通过mysql_query检索到的结果集;我不打算在这里重复它们。


你也拼错了DISTINCT。为代码添加正确的错误检查/处理。


不要被破坏的调试输出的红色鲱鱼误导:

echo "INSERT INTO email (First, Last, Full, Email, CountryCoude, Phone, Company, Serial)
    VALUES ('".$first."','".$last."','".$first." ".$last."','".$email."',".$code.",".$phone.",'".$company."','".$serial."')";

您在此处使用了错误的变量名称。你没有在实际执行插入的函数中犯这个错误。 (我不明白为什么这个调试输出不是里面的那个函数,这种错误会非常明显且易于避免。)