如何在PHP中使用准备好的语句计数?

时间:2017-01-14 08:39:05

标签: php prepared-statement

$con = mysqli_connect("localhost","root","","uploads");
if($con)
{
    $sql = "SELECT COUNT(id) FROM products";
    $obj = mysqli_query($con,$sql);
    if(is_object($obj))
    {
        $rows = mysqli_fetch_row($obj);
        $totalrows = $rows[0];


    enter code here

    }else{
        echo "not object";
    }

}else
{
    echo "db issue";
}

这段代码完全没问题,但我想使用准备好的statment.i尝试执行相同的操作,但是使用准备好的声明无法获得相同的结果。我该怎么做?

1 个答案:

答案 0 :(得分:1)

查看以下解决方案

//db configuration
$server   = 'localhost';
$dataBase = 'uploads';
$UserName = 'root';
$Password = '';

PHP MySQLi准备好的声明

$con = mysqli_connect($server, $userName, $password, $dataBase);
$sql = "SELECT COUNT(id) FROM products";
$stmt = mysqli_prepare($con, $sql);  
if(mysqli_stmt_execute($stmt)) { 
    mysqli_stmt_bind_result($stmt, $totalRows);
    mysqli_stmt_fetch($stmt);   
    echo $totalRows;
}

PHP MySQLi面向对象

$con = new mysqli($server, $userName, $password, $dataBase);
$stmt = $con->query("SELECT COUNT(id) FROM products");
if ($stmt->num_rows > 0) {
    while($row = $stmt->fetch_row()) {
        $totalRows = $row[0];
        echo 'Total number of rows is '.$totalRows;
    }
}
$stmt->close();

PHP MySQLi,面向对象的准备语句

$con = new mysqli($server, $userName, $password, $dataBase);
$stmt = $con->prepare("SELECT COUNT(id) FROM products");
$stmt->execute();
$stmt->bind_result($totalRows);
$stmt->fetch();
echo 'Total number of rows is '.$totalRows;
$stmt->close();

PHP PDO with Prepared Statement

try {
    $con =  new PDO("mysql:host=$server;dbname=$dataBase;", $userName, $password);
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $con->prepare("SELECT COUNT(id) FROM products"); 
    $stmt->execute(); 
    $totalRows = $stmt->fetchColumn();

    echo 'Total number of rows is '.$totalRows;

} catch(PDOException $e){
    echo $e->getMessage();
    die();
}