如何在多列中使用相同的变量编写 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个问题:
- 您在查询中使用 5 个值时未绑定 5 个值;
您需要删除引号并将通配符放在绑定变量的位置:
$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 . '%'
);
我正在尝试 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个问题:
- 您在查询中使用 5 个值时未绑定 5 个值;
您需要删除引号并将通配符放在绑定变量的位置:
$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 . '%' );