我在一个简单的搜索引擎上工作,我所拥有的工作很好,但我想改变这行代码:
$query = "SELECT * FROM mobiles WHERE (`name` LIKE '%".$search."%') or (`type` LIKE '%".$search."%')";
$query = "SELECT * FROM mobiles WHERE (`name` LIKE '%:search%') or (`type` LIKE '%:search%')";
但由于某些原因,这不起作用
这里是完整的PHP代码<?php
require("../login/connect.php");
$search = $_GET['query'];
$query = "SELECT * FROM mobiles WHERE (`name` LIKE '%".$search."%') or (`type` LIKE '%".$search."%')";
$query_params = array(':search' => $_GET['query']);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$rows = $stmt->fetchAll();
$min_length = 3;
if(strlen($query) >= $min_length)
{
echo "<table border='0' width='600' align='center' cellpadding='1'>";
echo "<tr align='center' bgcolor='#03acfa' >
<td height='35px' width='200px'><b>Mobile Name</b></td>
<td><b>Mobile Type</b></td>
</tr>";
foreach($rows as $row):
{
echo "<tr align='center' bgcolor='#93dafb'>
<td height='25px'>". $row['name'] ."</td> <td>".$row['type']."</td>
</tr>" ;
}
endforeach;
}
变化
$query_params = array(':search' => $_GET['query']);
$query_params = array(':search' => "%".$search."%");
现在你可以在查询
上使用它(`name` LIKE :search) or (`type` LIKE :search)";
绑定不能像那样是局部的。您必须在查询中使用LIKE :search
,然后在您要绑定的变量中包含%
s