麻烦选择从哪里?
问题描述:
我有这样的代码,但奇怪的是它总是回应出“是!”,即使在FLD2中没有像'555'这样的值,或者即使根本没有FLD2。麻烦选择从哪里?
$testresult = mysqli_query($database, "SELECT * FROM imei359327039828680 WHERE FLD2 = '555'");
if ($testresult) { echo('yes!'); } else { echo('no!'); }
任何想法,谢谢!
答
正如由ctshryock提到的,变量设置为一个良好的SQL查询的返回值将总是被当作为布尔对象审查视为真。
要测试是否返回任何数据,您可以使用mysql_num_rows()
PHP Documentation这将返回返回的行数。如果您的查询不匹配任何行,则此函数应该返回,这将被视为假的if()
条件。
$testresult = mysql_query("SELECT * FROM imei359327039828680 WHERE FLD2 = '555'");
if(!$testresult)
die('SQL Error'); # The SQL Query Failed for some reason
if(mysql_num_rows($testresult))
die('SQL Returned No Result'); # The SQL Query returned nothing
while($r = mysql_fetch_assoc($testresult)) {
# Process your returned rows here
}
答
mysqli_query
总是返回一个结果对象,除非查询以某种方式失败。如果查询不返回任何行,您仍然会得到一个结果对象;它只是不会有任何行。
答
您正在测试$testresult
是否为真,如果它们是预期的查询结果,则不是。如果查询有效,即格式正确,它将返回一个有效的对象。你想看看$testresult
的返回值,看看你是否找到了一些东西。
THNAKS,现在它工作! $ testresult = mysqli_query($ database,“SELECT * FROM imei359327039828680 WHERE FLD2 ='555'”); $ testrow = mysqli_fetch_array($ testresult); if($ testrow){echo('yes!'); } else {echo('no!'); } – 2010-05-28 15:48:46