PHP MySQLi准备语句不起作用

时间:2016-02-29 22:27:28

标签: php mysql mysqli

我正在尝试使用MySQLi创建一个准备好的语句并对数据库运行它,目前我正在获取带有结果元数据的列名,但是我没有将任何结果打印到我的HTML表和{{1}返回0.我运行了一些测试回声,mysqli_stmt_num_rows($statement)确实从文本框中获得了正确的值,当我在数据库上运行查询时直接替换?有一个值,它确实返回一些数据。知道我为什么不向MySQLi获取数据吗?  `

$value

2 个答案:

答案 0 :(得分:1)

不要引用你的占位符,绑定会为你做到:

使用

$query = "SELECT * FROM City WHERE name LIKE ?";

并在您要绑定的变量中包含通配符%,而不是在预准备语句中

并且由于mysqli_stmt_bind_param()要求参数通过引用传递,您需要在绑定之前附加%

$value .= '%';
mysqli_stmt_bind_param($statement, "s", $value);

答案 1 :(得分:0)

占位符不会在引号内替换。您可以使用CONCAT附加通配符。

$query = "SELECT * FROM City WHERE name LIKE CONCAT(?, '%')";