php - 如何连接查询中的参数

标签 php mysql

我想在以下查询中使用参数,但我不太确定如何操作。

$id 将为 1、2 或 3 等,我想选择其中 C.Name 为 Galleri1 或 Galleri2 等。

这是我到目前为止得到的,但我不知道如何添加 $id。

function getGallery($id){

$data = array();

 $Q = $this->db->query('SELECT P.*, C.Name AS CatName
           FROM products AS P
           LEFT JOIN categories C
           ON C.id = P.category_id
           WHERE C.Name = "Galleri($id)"
           AND p.status = "active"
           ');

更新:我正在使用 PHP 和 MySQL

最佳答案

看看this PHP manual .

首先,您为图库名称创建一个字符串。 “Galleri1”、“Galleri2”等。然后将该字符串作为参数绑定(bind)到查询。

像这样:

  $sth = $this->prepare('SELECT P.*, C.Name AS CatName
               FROM products AS P
               LEFT JOIN categories C
               ON C.id = P.category_id
               WHERE C.Name = ?
               AND p.status = "active"
               ');

 $gallery_name = "Galleri$id";
 $sth->bind_param( 1, $gallery_name );

 $q = $sth->execute();

像其他回答者建议的那样从参数构建查询字符串可能会为SQL injection attacks打开大门如果你不小心的话。例如,如果 $id="' OR 1=1 OR C.Name !='" 将其连接到查询字符串会发生什么?

使用参数绑定(bind)(如我上面所示)可以防止此问题。

关于php - 如何连接查询中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835600/

相关文章:

php - jQuery $.ajax 请求在 Internet Explorer 中收到错误响应

php - Zend Expressive 中的 FastRoute 组

mysql - 如何使用hibernate连接外部mySQL数据库

php - Codeigniter更新SQL问题

javascript - 只能载入一张Zingchart

mysql - 为什么仅通过 Rails 中的套接字访问我的 Rails mysql 时会损坏?

php - Mysql插入和更新

mysql - 安装mysql时出现问题?安装程序不会超出几个初始步骤吗?

php - 这种类型的表达式 "Start Date: [Some Month] [dd], [yyyy]"的正则表达式是什么?

mysql - 具有与 1 个字段相关的 2 个字段的联接表