我有一个将数据发送到mysql数据库的php文件。当我尝试发送数据时得到这个:
从输出中可以看出,我输入insert函数的变量不是空的,而是在查询中发送的值是。这是为什么?ERROR! EMPTY RESULTINSERT INTO电子邮件 (第一,最后,完整,电子邮件, CountryCoude,电话,公司,序列号) 价值观('','',' ' 'benespitz @ gmail.com' ,,,' Webscan的, 公司“” TEST mySQL的')BenSpitzbenespitz@gmail.com+1303-459-4521Webscan, Inc.TEST mySQL
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."')");
}
?>
答案 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."')";
您在此处使用了错误的变量名称。你没有在实际执行插入的函数中犯这个错误。 (我不明白为什么这个调试输出不是里面的那个函数,这种错误会非常明显且易于避免。)