php - PDO、可变 SQL 查询、bindParam 和循环

标签 php mysql loops pdo

我最近从 mysql_ 函数转移到 PDO,有些东西我不能适应我的情况。

问题是搜索查询,实际上我是这样做的:

$resultat = $DB->prepare('SELECT * FROM `posts` WHERE `title` LIKE :searchterm OR `tags` LIKE :searchterm LIMIT '.$debut.', '.NB_ART);
$resultat->bindParam(':searchterm',$searchterm);
$resultat->execute();

知道查询的大小可能会根据用户搜索而改变,我该怎么做:

$tab = explode(' ',$searchterm);
$query = 'SELECT * FROM posts WHERE ';

foreach($tab as $value){
    if( strlen($value)>2 ){
        $query .= ' (`title` LIKE "%'.$value.'%" OR `tags` LIKE "%'.$value.'%") AND';
    }
}
$query = substr($query,0,-3);
$query .= 'ORDER BY `date` DESC';

// And how can i do the bindParam() here ?

如果您能向我展示一个小示例作为开始,我将不胜感激。

谢谢;)

最佳答案

$data = array();
$arr_query = array();

$tab = explode(' ',$searchterm);
$query = 'SELECT * FROM posts WHERE ';

foreach($tab as $value){
    if( strlen($value)>2 ){
        // sry for that, but i think implode() better
        $arr_query[] = '(`title` LIKE ? OR `tags` LIKE ?)';

        $data[] = '%'. $value .'%';
        $data[] = '%'. $value .'%';
    }
}
$query .= implode(' AND', $arr_query);
$query .= ' ORDER BY `date` DESC';

$res = $pdo->prepare($query);
$res->execute($data);

第一个示例中的限制也必须受到保护。

关于php - PDO、可变 SQL 查询、bindParam 和循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10601406/

相关文章:

java - 带循环的输入和输出

php - Laravel 和 Composer 在 Linux Mint 上的安装

php - 使用 PHP 和 MySQL 插入和检索服务器变量

PHPExcel: 'PHPExcel_Reader_excel.php' 未找到

mysql - 年龄计算小数位错误

javascript - 编写一个查找值并返回颜色的循环

php - 使用 PHP mySQL simpleHTMLDOM 插入数据时调用非对象上的成员函数 find()

数据库更新的 PHP 查询执行成功但值未在数据库表上更新

mysql - 从多 SELECT 子查询返回多行

c - 使用用户输入查找最大和最小数字