Mysql准备好的语句LIKE问题
Posted
技术标签:
【中文标题】Mysql准备好的语句LIKE问题【英文标题】:Mysql prepared statement LIKE issue 【发布时间】:2019-07-02 07:08:14 【问题描述】:我正在尝试制作一个实时搜索表单,每当用户键入一个字母时,就会调用一个 ajax 函数并在数据库中搜索结果 Ajax 被成功调用,但我唯一的问题是我的查询就像 WHERE col = value not LIKE 一样,我必须输入 col 全名才能得到结果,否则我没有得到任何结果。 这是我的php代码:
if (isset($_POST['search']))
$tagname = $_POST['search'];
$mysqli->set_charset('utf8');
$stmt = $mysqli->prepare("SELECT *,(SELECT COUNT(tagid) FROM sectags WHERE sectags.tagid = tags.tagid) FROM tags WHERE tag LIKE ?");
$stmt->bind_param('s', $tagname);
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
$stmt->bind_result($id, $tag, $imghref, $tagcount);
echo '<ul>';
while ($stmt->fetch())
?>
<!-- Creating unordered list items.
Calling javascript function named as "fill" found in "script.js" file.
By passing fetched result as parameter. -->
<li onclick='fill("<?php echo $tag ?>")'>
<a>
<!-- Assigning searched result in "Search box" in "search.php" file. -->
<?php echo $tag; ?>
</li></a>
<?php
?>
</ul>
<?php
稍后将使用从数据库中选择的其他参数。 谢谢。
【问题讨论】:
【参考方案1】:您需要在绑定到参数的值中包含通配符,以使LIKE
正常工作,例如
$tagname = '%' . $_POST['search'] . '%';
【讨论】:
以上是关于Mysql准备好的语句LIKE问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在mysqli准备好的语句中使用SQL LIKE子句[重复]
Golang 中的跨数据库准备好的语句绑定(like 和 where in)