相关疑难解决方法(0)

在PDO中实现LIKE查询

我在PDO中实现LIKE时遇到问题

我有这个问题:

$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'";
$params = array($var1, $var2);
$stmt = $handle->prepare($query);
$stmt->execute($params);
Run Code Online (Sandbox Code Playgroud)

我检查了它们$var1,$var2它们包含了我想要搜索的单词,我的PDO工作正常,因为我的一些查询SELECT INSERT工作,这只是我LIKE在PDO中不熟悉的.

结果是没有返回.我$query的语法是否正确?

php mysql pdo sql-like

37
推荐指数
3
解决办法
4万
查看次数

用psycopg2转义Postgres的SQL"LIKE"值

psycopg2是否有一个函数来转义Postgres 的LIKE操作数的值?

例如,我可能想要匹配以字符串"20%of all"开头的字符串,所以我想写这样的东西:

sql = '... WHERE ... LIKE %(myvalue)s'
cursor.fetchall(sql, { 'myvalue': escape_sql_like('20% of all') + '%' }
Run Code Online (Sandbox Code Playgroud)

我可以在这里插入一个现有的escape_sql_like函数吗?

(类似的问题如何显式引用字符串值(Python DB API/Psycopg2),但我找不到答案.)

python postgresql psycopg2 python-db-api

31
推荐指数
6
解决办法
2万
查看次数

在bindParam中使用LIKE进行MySQL PDO查询

我已经阅读了关于如何编写这些查询的多个示例,但我正在努力使这个特定的类似于在使用时运行 bindParam

这是匹配以a开头的用户名的正确方法吗?

$term = "a";
$term = "'$term%'";

$sql = "SELECT username 
        FROM `user` 
        WHERE username LIKE :term 
        LIMIT 10";      

$core = Connect::getInstance();

$stmt = $core->dbh->prepare($sql);
$stmt->bindParam(':term', $term, PDO::PARAM_STR);
$stmt->execute();
$data = $stmt->fetchAll();
Run Code Online (Sandbox Code Playgroud)

php mysql database pdo

18
推荐指数
2
解决办法
2万
查看次数

如何在PDO预处理语句中使用LIKE子句?

我有这样的SQL查询:

SELECT * FROM tbl_name WHERE title Like "%:needle%"
Run Code Online (Sandbox Code Playgroud)

当我使用此语句手动查询MySQL数据库时,它可以工作.但是当我使用它与PDO并使用相同的值时:我手动查询的针它只返回一个空的结果集.

utf8编码会影响它的行为吗?

php mysql pdo

11
推荐指数
2
解决办法
6072
查看次数

将PHP准备好的语句与LIKE结合起来

任何人都知道如何将PHP预处理语句与LIKE结合起来?即

"SELECT * FROM table WHERE name LIKE %?%";

php sql-like

9
推荐指数
2
解决办法
7908
查看次数

使用like子句执行准备好的PDO语句

我是PHP的新手,我正在尝试学习使用PDO连接到测试MySQL数据库.我有以下内容:

try {
    $db = new PDO('mysql:dbname=MYDBNAME;host=MYHOST', 'USERNAME', 'PASSWORD');

    $query = "select * from books where ? like '%?%'";
    $stmt = $db->prepare($query);
    $stmt->execute(array($searchtype, $searchterm));  
} catch(PDOException $e) {
    echo 'PDOException: ' . $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

当我尝试它时,我收到以下警告:警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:无效的参数号:绑定变量的数量与令牌的数量不匹配

当我删除like子句和$ searchterm参数时,它会正确返回结果.我想 - 比如'%?%' - 可能不是用双引号创建这个查询的合法方式,所以我尝试转义',这不起作用.我四处寻找解决方案,发现有人将'%和%'移到$ searchterm所在的位置:

$query = "select * from books where ? like ?";
...
$stmt->execute(array($searchtype, '\'%'.$searchterm.'%\'')); 
Run Code Online (Sandbox Code Playgroud)

我得到了相同的结果.
任何帮助表示赞赏.谢谢!

/ UPDATE **** /我在http://us3.php.net/manual/en/pdo.prepared-statements.php的例子12中找到了

Example#12使用占位符无效

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'");
$stmt->execute(array($_GET['name'])); …
Run Code Online (Sandbox Code Playgroud)

php sql pdo prepared-statement

5
推荐指数
1
解决办法
4598
查看次数

如何使用PDO进行搜索?

为了使用PDO进行LIKE搜索,我需要%在传递参数之前将其添加到参数中.

这有效:

$qry = ' 
    SELECT product_id
    FROM cart_product
    WHERE product_manufacturer_num LIKE :search_string
';
$sth = $this->pdo->prepare($qry);
$sth->execute( array("search_string"=>'%'.$search_string.'%') );
Run Code Online (Sandbox Code Playgroud)

对我而言,这更像是一种黑客攻击,是否有更正式的方式来做到这一点?

php pdo

5
推荐指数
1
解决办法
3675
查看次数

Postgresql SQLSTATE[42P18]:不确定数据类型与 PDO 和 CONCAT

我在, inCONCAT()上使用时遇到问题。WHEREPDO

编码:

<?php
require_once('config.php');

$fdate = '01/01/2010';
$tdate = '31/12/2030';
$identification = '';

$count = "SELECT count(*) as total FROM ( select time_id from doc_sent WHERE date >= :fdate AND date <= :tdate AND identification LIKE concat('%',:identification,'%') ) x;";

//$count = "SELECT count(*) as total FROM ( select time_id from doc_sent WHERE date >= :fdate AND date <= :tdate ) x;";


$stmt_count_row_main_table = $pdo->prepare($count);
$stmt_count_row_main_table->execute(['fdate' => $fdate, 'tdate' => $tdate, 'identification' => $identification]);
//$stmt_count_row_main_table->execute(['fdate' => …
Run Code Online (Sandbox Code Playgroud)

postgresql pdo concat

4
推荐指数
1
解决办法
2940
查看次数

PHP 绑定通配符

希望有人能帮助我了解当变量值旁边需要多字符通配符时如何在 mysqli 中绑定参数。我发现它在创建 SQL 语句时对我有用,如下所示:

$sql = "SELECT item_title FROM item WHERE item_title LIKE '%$title%'";
Run Code Online (Sandbox Code Playgroud)

但是,我尝试按照相同的模式绑定变量,发现它失败了。他们使用了这个代码:

$sql = "SELECT item_title FROM item WHERE item_title LIKE '%?%'";
Run Code Online (Sandbox Code Playgroud)

它引发了这个错误:

警告: mysqli_stmt_bind_param() [function.mysqli-stmt-bind-param]: 变量数与 program_name 在线准备语句中的参数数不匹配......

谁能告诉我如何解决这个问题?谢谢你。

php mysql sql mysqli prepared-statement

3
推荐指数
1
解决办法
2308
查看次数

bindParam用于PDO MySQL查询中LIKE的GET值

是否有任何转换方式

$term = $_GET['p'];
$stmt = $dbh->prepare("
    SELECT      *
    FROM        posts
    WHERE       heading LIKE '%$term%'
    OR          full_text LIKE '%$term%'
    LIMIT       0 , 30
");
$stmt->execute();
$answer = $stmt->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

INTO之类的东西

$term = "'%" . $_GET['p'] . "%'";
$stmt = $dbh->prepare("
    SELECT      *
    FROM        posts
    WHERE       heading LIKE :term
    OR          full_text LIKE :term
    LIMIT       0 , 30
");
$stmt->bindParam(":term", $term);
$stmt->execute();
$answer = $stmt->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

这样我可以使用bindParam(":term", $term);而不是'%$term%'在查询中?

我已经在bindParam中查看了这些使用LIKE的MySQL PDO查询使用bindParam的Mysql,PDO-Like语句.但他们没有给我任何正确的答案.

mysql pdo get sqlbindparameter sql-like

2
推荐指数
1
解决办法
4287
查看次数

参数化查询PHP/MySQL

可能重复:
如何在PHP中使用LIKE语句创建PDO参数化查询?
PHP PDO编写语句 - mysql LIKE查询

我正在尝试为我的网站制作一个搜索引擎,而现在我只是想确保连接完全正常.这是我到目前为止的代码:

编辑代码(仍然不起作用,但到目前为止我在这里的建议):

$db = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_NAME, DB_USER, DB_PASS);
$stmt = $db->prepare("SELECT * FROM table_1 WHERE name LIKE ? ORDER BY bid DESC");
$stmt->bindParam(1, "%{$_GET['s']}%", PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll();
Run Code Online (Sandbox Code Playgroud)

我试着看看不同的方法是否execute可以做任何事情,但无论上面哪种方式我写它,我都得到相同的结果,没有.我想%在那里使用通配符,所以它会在任何地方进行搜索name.在那个笔记上,我正确使用它吗?大多数混淆我的事情是,当我在完全相同的查询到的phpMyAdmin输入,查询经过精细跑,所以我的猜测是,我在什么地方搞砸了的PDO.


编辑:PHPMyAdmin查询:

SELECT*FROM table_1 WHERE name LIKE'%Test%'ORDER BY bid DESC LIMIT 0,30

这将返回1个结果,如预期的那样.我的代码和这个查询有什么不同?:/

php mysql pdo

1
推荐指数
1
解决办法
9516
查看次数

使用 LIKE 和占位符的准备语句

是否可以在 LIKE 语句中与“%”结合使用 MSSQL 中的预准备语句(而非 PDO)占位符?

我对代码进行了一些操作,最终得到以下结果:

哪里列喜欢?%

并且参数是“test1_”,所以我想获取“test1_%”的所有结果

但这不起作用

php sql-server prepared-statement

-1
推荐指数
1
解决办法
1251
查看次数