我有一个查询正在尝试执行Wicard搜索:形式是:
<form name="attdate1" action="keyword.php" method="post">
<input type=text name="hs_data" id="hs_data">
<button class ='btn btn-lg btn-danger' type ="submit"> Search Records </button>
</form>
用户将输入一个单词来搜索我的数据库列 = hs nv vsa。如果找到匹配项,用户将获得返回的结果(当前在表中)。
当我运行查询时,我只得到成功的语句但没有结果?我刚开始准备发言稿,并且已经在这里得到了一些很好的帮助。任何帮助都非常感谢!
我的 PHP :
<?php
$mysqli = new mysqli("localhost", "root", "", "test3");
$hs_data=$_POST['hs_data'];
$nv_data=$_POST['hs_data'];
$vsa_data=$_POST['hs_data'];
$query = $mysqli->stmt_init();
//create a prepared statement
$query = "SELECT hs,nv,vsa FROM handover WHERE hs like ? or nv like ? or vsa like ?";
$statement = $mysqli->prepare($query);
$statement->bind_param('sss',$hs_data,$nv_data,$vsa_data);
//execute query
$statement->execute();
//bind result variables to be printed
$statement->bind_result( $hs,$nv,$vsa);
Print "</br></br></br></br></br><p>Your data is printed successfully</p>";
print '</br></br></br></br></br><table border="1">';
//fetch records
while($statement->fetch()) {
print '<tr>';
print '<td>'.$hs.'</td>';
print '<td>'.$nv.'</td>';
print '<td>'.$vsa.'</td>';
print '</tr>';
}
print '</table>';
//close connection
$statement->close();
当我只输入一个空白条目查询时,只有两列完整。当我输入一个单词时,我知道存在,除了我的成功消息之外,我没有得到任何返回
您的LIKE
比较中没有任何通配符。无通配符的 LIKE 与使用 =
基本完全相同:
fieldname LIKE 'foo' identical to fieldname = 'foo'
您需要执行更多类似操作的操作:
$hsa = '%' . $_POST['hs_data'] . '%';
或直接在查询中:
WHERE ... hsa LIKE CONCAT('%', ? , '%')