如何在多列中使用相同的变量编写 mysql 准备语句?

How to write mysql prepared statement using the same variable in many columns?

我正在尝试 select MySql 英语词典中的一个词。意思版本保存在不同的列中。所以我正在尝试编写我准备好的声明如下。但这给了我错误,到目前为止我还没有找到更好的解决方案。 我的代码如下:

$sql = "SELECT * FROM `dic1` 
                    WHERE 
                    eng     LIKE '%?%' OR 
                    eng2    LIKE '%?%' OR
                    eng3    LIKE '%?%' OR
                    eng4    LIKE '%?%' OR
                    eng5    LIKE '%?%'";

                $stmt = mysqli_prepare($conn, $sql);
 mysqli_stmt_bind_param($stmt, "sssss", $searchWord);

你能建议我一个更好的方法吗?谢谢你。

这里有2个问题:

  1. 您在查询中使用 5 个值时未绑定 5 个值;
  2. 您需要删除引号并将通配符放在绑定变量的位置:

    $sql = "SELECT * FROM `dic1` 
                WHERE 
                eng     LIKE ? OR 
                eng2    LIKE ? OR
                eng3    LIKE ? OR
                eng4    LIKE ? OR
                eng5    LIKE ?";
    
     $stmt = mysqli_prepare($conn, $sql);
     mysqli_stmt_bind_param(
         $stmt, 
         "sssss", 
         '%' . $searchWord . '%',
         '%' . $searchWord . '%',
         '%' . $searchWord . '%',
         '%' . $searchWord . '%',
         '%' . $searchWord . '%'
     );