Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MYSQLI数据库查询在撇号后不返回字符串_Php_Database_Mysqli_Prepared Statement - Fatal编程技术网

PHP MYSQLI数据库查询在撇号后不返回字符串

PHP MYSQLI数据库查询在撇号后不返回字符串,php,database,mysqli,prepared-statement,Php,Database,Mysqli,Prepared Statement,我有一个PHP搜索函数,它不会在撇号后面返回字符串,例如(金州花园)将返回(金州)。下面是我正在使用的代码。我一直在寻找答案,但似乎大多数回复都对转义字符串进行了评论。我已经有了数据库中的信息,并试图通过查询检索它,代码是 if (isset($_POST["search_submit"])) { if(empty(trim($_POST["search"]))){ echo 'Please search for an item'; } else{

我有一个PHP搜索函数,它不会在撇号后面返回字符串,例如(金州花园)将返回(金州)。下面是我正在使用的代码。我一直在寻找答案,但似乎大多数回复都对转义字符串进行了评论。我已经有了数据库中的信息,并试图通过查询检索它,代码是

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>  
if(isset($\u POST[“搜索\提交”])){
如果(为空(修剪($_POST[“search”])){
echo“请搜索项目”;
}否则{
$find=“%”(修剪($_POST[“search”])。“%”;
$sql=(“从联合收割机中选择*
像?还是像?这样的b_产品;
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$sql)){
echo“连接失败,请稍后再试”;
}否则{
mysqli_stmt_bind_param($stmt,“ss”,$find,
$find);
mysqli_stmt_execute($stmt);
如果(!empty($_会话['basket']){
foreach($_会话['basket']作为$key=>$value){
您可以使用:

$find="%".mysqli_real_escape_string($_POST['search'])."%";

它将得到您想要的完整字符串结果。

代码看起来很好,您能否显示代码来演示字符串被截断的位置,是否只是显示不正确(请在从数据库检索的行上尝试
print\r()
)当整个字符串应该被截断时,var\u dump会显示字符串(8)“football”“足球和篮球"。所有其他不包含撇号的字符串都会完整返回。我有一个foreach循环$key=>$value并回显一个结果。唯一受影响的结果是包含撇号的字符串。您可以为该循环添加代码吗?有一个错误,它说mysqli_real_escape_字符串需要2个参数,只有1个参数。当我尝试添加$c时onn到它echos连接失败的代码$find=mysqli\u real\u escape\u string($con,$\u POST['search']);然后您可以使用$find=“%”“%.”$find.”.“%”正确地检查连接变量$con=mysqli\u connect(“localhost”,“your\u mysqluser”,“your mysql\u psw”,“your mysql\u db”);//检查连接是否(mysqli\u connect errno()){echo“无法连接到MySQL:”.mysqli_connect_error()}您的代码可以正常工作,谢谢。但我认为导致问题的原因是在初始搜索后,字符串完全显示出来。我有另一个代码收集这些信息,并将其放在另一个字段中,在该字段中我有这个片段,if(filter_input(input_POST,'id'){if(isset($_SESSION['basket']),我认为这就是字符串的崩溃之处,也许是筛选器输入导致了字符串的崩溃