我有以下代码:
$countQuery = "SELECT ARTICLE_NO FROM ? WHERE upper(ARTICLE_NAME) LIKE '% ? %'";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("ss", $table, $brand);
$numRecords->execute();
$data = $con->query($countQuery) or die(print_r($con->error));
$rowcount = mysql_num_rows($data);
$rows = getRowsByArticleSearch($query, $table, $max);
$last = ceil($rowcount/$page_rows);
}
哪个应该可以正常工作。但是我收到以下错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '? 附近使用的正确语法。WHERE upper(ARTICLE_NAME) LIKE '%?%'' 在第 1 行
如果我把
SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '% o %';
查询工作正常。$table 是上面定义的,从 GET 收到查询,都是正确的有效值。为什么会失败?
编辑:更改为:
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE '% ? %'";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
导致错误:
警告:mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: 变量数与 C:\Program Files\EasyPHP 3.0\www\prog\get_records.php 在线准备语句中的参数数不匹配38
命令不同步;你现在不能运行这个命令
然而
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ?";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", "%".$query."%");
结果是
致命错误:无法通过第 38 行 C:\Program Files\EasyPHP 3.0\www\prog\get_records.php 中的引用传递参数 2
最后
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ? ";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
只会给:
命令不同步;你现在不能运行这个命令
是否不可能为 LIKE 状态使用参数?