php - 将此 MySQLi 查询编写为准备好的语句

标签 php mysqli prepared-statement

我有一个现有的 MySQLi 查询:

$conn = dbConnect('query');
$galNumb = "SELECT COUNT(pj_gallery_id) FROM pj_galleries WHERE project = {$project}";
$gNumb = $conn->query($galNumb);
$row = $gNumb->fetch_row();
$galTotal = $row[0];

这会计算每个项目与 $project 中包含的查询字符串中的值相匹配的画廊数量。

它工作完美,但与准备好的语句相比并不安全。我已经研究了两天,无法学习如何将此语句编写为准备好的语句。我们将不胜感激任何和所有帮助。

更新: 我在这里靠裤子的座位飞行。我只需要展示如何将上面的代码编码为准备好的语句。这种事情并没有像学习 PHP 那样引起我的大脑共鸣,我只是没有得到任何这样的东西。 PHP 手册令人困惑,似乎是为已经了解 PHP 的人编写的。

简而言之,我需要上述代码的准备语句版本,以便我可以在页面上回显结果。目前,根据我的数据库中的内容,数字应该是 3,并且始终返回 1。

我希望我知道的更多,以便我可以更好地表达我的问题,但遗憾的是,我仍在学习。抱歉。

更新 2: 根据建议和研究,我编写了这个查询,但它总是返回值 1,无论数据库中实际有什么:

$galNumb = "SELECT COUNT(pj_gallery_id) FROM pj_galleries WHERE project_part = ?";
$stmt = $conn->prepare($galNumb);
$stmt->bind_param('i', $project);
$gNumb = $stmt->execute();

同样,我只想计算每个项目中有多少个画廊。我知道这应该很简单,但它不适合我。数据库中目前有 1 个项目,有 3 个画廊。查询应返回 3。

最佳答案

这很简单。这将准备一个 sql 语句,执行它并获取第一行。

<?php

// create the prepared statement
$stmt = $conn->prepare('SELECT COUNT(pj_gallery_id) FROM pj_galleries WHERE project = ?');

// bind a variable to the statment
// the character denotes the type of the variable
// 's' for string
// 'i' for integer
$stmt->bind_param('i', $project);

// execute the query
$stmt->execute();

// get the result variable
$result = $stmt->get_result();

// fetch the row
$row = $result->fetch_row();

if ($row) {
    echo "The count is " . $row[0]; 
}

?>

文档非常简单。您在底部有一个代码示例。

http://php.net/manual/en/mysqli.prepare.php

关于php - 将此 MySQLi 查询编写为准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735854/

相关文章:

php - 使用 PhP 执行准备好的语句

php - 将一列的值设置为另一列

php - 更新数据库前检查变量类型 | PHP

php - Wordpress 侧边栏搞砸了。为什么?

php - PHP OOP 中的未定义属性错误消息

php - MySQL php get column using another column(使用用户名获取密码)

java - 在方法之间重用 PreparedStatement?

php - 试图让 imagick 在 Windows x64 的 PHP 5.4.3 上运行

php - 我可以显示查询错误号,或者如何找出我的 MySQL 查询出了什么问题?

java - PreparedStatement 只对数据库进行临时更改还是可以将其永久更改?