【发布时间】:2018-07-20 05:57:55
【问题描述】:
我有一个 PHP 搜索函数,它在撇号后不返回字符串字符,例如。 (Golden State's Garden) 将回归 (Golden State)。我正在使用的代码如下。我正在寻找答案,但似乎大多数回复都评论了转义字符串。我已经在数据库中有信息,并试图用查询来检索它,代码是
if (isset($_POST["search_submit"])) {
if(empty(trim($_POST["search"]))){
echo 'Please search for an item';
} else{
$find = "%".(trim($_POST["search"]))."%";
$sql = ("SELECT * FROM combine WHERE a_product
LIKE ? OR b_product LIKE ? ");
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
echo "connection failed, try again later";
}else{
mysqli_stmt_bind_param($stmt, "ss", $find,
$find);
mysqli_stmt_execute($stmt);
if(!empty($_SESSION['basket'])){
foreach($_SESSION['basket'] as $key => $value){
<tr>
<td><?php echo $value["name"]; ?></td>
【问题讨论】:
-
代码看起来不错,你能显示代码来演示字符串被截断的位置吗?它只是显示不正确(尝试
print_r()从数据库中检索的行) -
当整个字符串应该是“football's and baskekball's”时,var_dump 会显示 string(8)“football”。所有其他不包含撇号的字符串都将完整返回
-
我有一个 foreach 循环作为 $key=>$value 并回显一个结果。唯一受影响的结果是包含撇号的结果
-
你能添加那个循环的代码吗?
标签: php database mysqli prepared-statement