我正在使用ajax实时搜索来选择名称和姓氏串联与输入文本匹配的所有用户,并且效果很好:
$sql = "SELECT * FROM users WHERE concat(name,' ',surname ) LIKE ?";
现在,我想将相同的用户也使用相反的串联,即姓氏-名称。我已经尝试过了,但是没有用。
$sql = "SELECT * FROM users WHERE (concat(name,' ',surname ) LIKE ?) or (concat(surname,' ',name ) LIKE ?)";
if(isset($_REQUEST["term"])){
// Prepare a select statement
$sql = "SELECT * FROM users WHERE (concat(name,' ',surname ) LIKE ?) or (concat(surname,' ',name ) LIKE ?)";
if($stmt = mysqli_prepare($conn, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "s", $param_term);
// Set parameters
$param_term = $_REQUEST["term"] . '%';
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
$result = mysqli_stmt_get_result($stmt);
// Check number of rows in the result set
if(mysqli_num_rows($result) > 0){
// Fetch result rows as an associative array
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo "<p>" . $row["name"] . " " . $row["surname"] . "</p>"
}
} else{
echo "<p>No matches found</p>";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
// Close statement
mysqli_stmt_close($stmt);
}
我尝试匹配相同的用户,但收到消息:
错误:无法在用户所在的位置执行SELECT * FROM (concat(name,'',surname)LIKE?)或(concat(name,'',surname)LIKE ?)。
答案 0 :(得分:0)
您在查询字符串中有两个占位符?
,但仅将一个变量绑定到该语句。尝试再次绑定它,以便计数匹配。
mysqli_stmt_bind_param($stmt, "ss", $param_term, $param_term);