2011-02-10 74 views
1

我有以下脚本:PHP的MySQL,计算行

 
$queryUniqueEmail = "SELECT email FROM Applicant WHERE email = '".base64_encode($email)."';"; 
    $resultUniqueEmail = $db->query($queryUniqueEmail); 
    $resultRowsEmails = $resultUniqueEmail->numRows(); 
if($resultRowsEmails == 0) 
    $db->query($query); 
    } 
$resultRowsEmails->free(); 
} 
$db->close(); 
echo "Finish!"; 

基本上验证一个电子邮件已经存在的数据库,如果是插入操作被跳过。无论我在运行时遇到以下错误

PHP Fatal error: Call to undefined method mysqli_result::numRows() in /var/www/html/asd.php 

我该如何解决?

+0

它看起来像作为跛脚数据库避开功能,正确的的base64? ;-)无论如何,你没有使用准备好的语句,所以使用mysqli错误的方式 –

+0

你是对的x 2 :)我从某种xml获取的数据不是有效的xml,所以为了避免我刚刚编码的转义麻烦BASE64。我使用的代码不是我的,我只是试图“维护”它。我个人不使用mysqli,因为我的低OOP技能,我仍然使用旧的mysql方法。 – Michael

回答

2

mysqli_result类中没有称为numRows的方法。

有一个属性,num_rows

$resultRowsEmails = $resultUniquEmail->num_rows; 

http://php.net/manual/en/class.mysqli-result.php

+0

是的,你是对的,这是如此明显,我没有注意到它。但是现在我得到了PHP致命错误:调用一个非对象的成员函数free() – Michael

+1

@Michael,你在整数上调用'free()'。不应该是'$ resultUniqueEmail-> free()'? – binaryLV

+0

因为您将它调用到包含大量行$ resultRowsEmails而不是结果对象$ resultUniqueEmail的变量上。 – singles