我正在尝试为我的网站制作一个搜索引擎,而现在我只是想确保连接完全正常.这是我到目前为止的代码:
编辑代码(仍然不起作用,但到目前为止我在这里的建议):
$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个结果,如预期的那样.我的代码和这个查询有什么不同?:/
我真的不明白你的问题是什么,但我猜你不知道如何添加%?如果是这样,试试这个:
$stmt = $db->prepare("SELECT * FROM table_1 WHERE name LIKE ? ORDER BY bid DESC");
$stmt->bindValue(1, "%{$_GET['s']}%", PDO::PARAM_STR);
$stmnt->execute();
// fetch and win! :-)
Run Code Online (Sandbox Code Playgroud)
一点解释:
PDO将引用并?适当地转义参数.这意味着,如果您具有约束力hello,PDO将替换?为'hello'(注意引号).因此,为了%使引号内部,您必须将它们添加到绑定的内容中,在这种情况下$_GET['s'].
| 归档时间: |
|
| 查看次数: |
9516 次 |
| 最近记录: |