%像mysqli%语句错误地返回

时间:2014-11-20 21:26:11

标签: php mysqli

我有一个正在尝试执行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>

用户将输入一个单词以搜索我的数据库columns = 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();

当我只输入空白条目查询时,只有两列完整。当我说出一个字我知道存在时,除了我成功的消息之外我没有得到任何回报

1 个答案:

答案 0 :(得分:1)

您的LIKE比较中没有任何通配符。无通配符的LIKE与使用=基本完全相同:

fieldname LIKE 'foo'     identical to        fieldname = 'foo'

你需要做更多的事情:

$hsa = '%' . $_POST['hs_data'] . '%';

或直接在查询中:

WHERE ... hsa LIKE CONCAT('%', ? , '%')