我正在尝试从mysql表中获取产品列表。我正在尝试以下代码,但它无法正常工作。请给我任何建议。
致命错误:调用未定义的方法mysqli_stmt :: rowCount()
代码
$query = "SELECT id, name, price FROM female_products ORDER BY name";
$stmt = $con->prepare( $query );
$stmt->execute();
$num = $stmt->rowCount();
if($num>0)
{
//my work here
}
CONFIG.PHP
$db_username = 'root';
$db_password = '';
$db_name = 'ecommerce';
$db_host = 'localhost';
try {
$con = new mysqli($db_host, $db_username, $db_password,$db_name);
}catch(PDOException $exception){
echo "Connection error: " . $exception->getMessage();
}
答案 0 :(得分:1)
假设你想要一个真正的PDO解决方案,而不是一个mysqli:
try {
$aOptions = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
// play around with options
$dbh = new PDO('mysql:host='.DBHOST.';dbname='.DBNAME.';charset=utf8', ''.DBUSER.'', ''.DBPWD.'',$aOptions);
}
catch(PDOException $e) {
echo $e->getMessage();
// do something smarter then just echo error!
}
$sql = "SELECT id, name, price FROM female_products ORDER BY name";
$stmt = $dbh->query($sql);
$aArray = $stmt->fetchAll();
if(count($aArray) > 0){
// do something
}
else{
// empty result
}
我个人认为PDO比mysqli更容易。 选项:你很快就会玩它,所以使用数组很方便。 你已经准备好了,但是你还没有使用准备好的声明吗? 如果此代码有效,请尝试查找hoe准备好的语句:防止SQL攻击的最佳防御之一!!
对于配置,我使用了常量,因此您需要在配置中定义主题。常量,因为它们在执行脚本时永远不会改变!