【问题标题】:mySqli Bind Parameter LIKE with WildcardmySqli 使用通配符绑定参数 LIKE
【发布时间】:2014-12-20 00:10:03
【问题描述】:

我在将 LIKE 与通配符绑定到我在 MySQLi 中准备好的语句中时遇到问题。我尝试了以下两种方法,如图所示& concat。(使用@fancyPants 输入更新)

  • 有没有办法让我可以在绑定发生后查看自己的 SQL 语句?

  • 如何正确绑定才能得到我想要的结果?

它可以在没有 LIKE 语句的情况下工作。

我只能从使用某个搜索词中提取数据。我的代码有什么问题吗?

$str = $_POST["searchstr"];


    if(isset($_POST['submit']))
    {
        $price=$_POST['price'];


        if(!empty($_POST['chkbx']))
        {
            foreach($_POST['chkbx'] as $selected)
            {


                $sql= 'SELECT bookTitle, bookPrice FROM nbc_book WHERE catID LIKE "%'.$selected.'%" AND bookTitle LIKE "%'.$str.'%" AND bookPrice < ?';
                $stmt=mysqli_prepare($con,$sql);
                mysqli_stmt_bind_param($stmt,"i",$price);
                mysqli_stmt_execute($stmt);
                mysqli_stmt_bind_result($stmt, $bookTitle, $bookPrice); 
                while ($stmt->fetch()) {
                     echo $bookTitle.$bookPrice."<br>";
                }
            }
        }
    }

【问题讨论】:

    标签: php mysql stored-procedures mysqli prepared-statement


    【解决方案1】:
    $searchStr =  'oracle';
    $sql= 'SELECT bookTitle, bookPrice FROM nbc_book WHERE catID LIKE ? AND bookTitle LIKE "%'.$searchStr.'%" AND bookPrice < ?';
    $stmt=mysqli_prepare($con,$sql);
    mysqli_stmt_bind_param($stmt,"ssi",$selected,$price);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $bookTitle, $bookPrice); 
    while ($stmt->fetch()) {
        echo $bookTitle;
    }
    

    【讨论】:

    • 用您的输入更新了代码,但它给出了这个错误。 “警告:mysqli_stmt_bind_param() [function.mysqli-stmt-bind-param]:类型定义字符串中的元素数与第 108 行 /var/www/sea​​rch.php 中的绑定变量数不匹配”
    • 修复了,可以去掉mysqli_stmt_bind_param中的$searchStr参数。忘记了。
    • 对不起兄弟不能给你代表我只有可怜的 6 次代表):
    • 我已根据您的建议进行了修改。不知何故,当我专门搜索“oracle”时,我只能设法从我的 sql 数据库中提取数据。我的代码有什么问题吗?谢谢。
    • 嗯,它会搜索$_POST["searchstr"] 中的任何内容。我看不到这部分代码。也许我不能帮助你,实际上我不是程序员,我更多的是 SQL 和数据库的人。在我的回答中,我只是在猜测。由于您的问题与原始问题不同,因此最好创建一个新问题。看,我们投入工作来回答你的问题,然后编辑问题以调整一个全新的问题在这里被认为是一种粗鲁。
    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2010-12-03
    • 2012-08-04
    相关资源
    最近更新 更多