PHP 中的准备语句错误
Prepared statement error in PHP
我有以下使用 PHP 执行的 SQL 查询,$q 是一个包含字符串的变量。
$sql =$conn->prepare('SELECT * FROM namebase WHERE name LIKE "%?%"');
$sql->bind_param('s', $q);
$sql->execute();
执行时,我收到一条错误消息,说
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\file\s.php on line 39
第 39 行是 $sql->bind_param('s', $q);
导致此错误的原因是什么?我只将一个变量传递给查询。那为什么会显示这个错误信息呢?
如果您有权访问数据库,我建议您创建一个存储过程。
然后创建如下:
getNames(
IN nameVAR VARCHAR(256)
)
SELECT * FROM namebase WHERE name LIKE ‘%nameVAR%’;
然后在您的 php 中调用 getName(?) 而不是放置您当前的语句
查看mysqli_stmt::bind_param
方法文档页面上的评论,有人遇到过完全相同的问题:https://secure.php.net/manual/en/mysqli-stmt.bind-param.php#102048
I had a problem with the LIKE operator
This code did not work:
<?php
$test = $sql->prepare("SELECT name FROM names WHERE name LIKE %?%");
$test->bind_param("s", $myname);
?>
The solution is:
<?php
$test = $sql->prepare("SELECT name FROM names WHERE name LIKE ?");
$param = "%" . $myname . "%";
$test->bind_param("s", $param);
?>
我有以下使用 PHP 执行的 SQL 查询,$q 是一个包含字符串的变量。
$sql =$conn->prepare('SELECT * FROM namebase WHERE name LIKE "%?%"');
$sql->bind_param('s', $q);
$sql->execute();
执行时,我收到一条错误消息,说
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\file\s.php on line 39
第 39 行是 $sql->bind_param('s', $q);
导致此错误的原因是什么?我只将一个变量传递给查询。那为什么会显示这个错误信息呢?
如果您有权访问数据库,我建议您创建一个存储过程。
然后创建如下:
getNames(
IN nameVAR VARCHAR(256)
)
SELECT * FROM namebase WHERE name LIKE ‘%nameVAR%’;
然后在您的 php 中调用 getName(?) 而不是放置您当前的语句
查看mysqli_stmt::bind_param
方法文档页面上的评论,有人遇到过完全相同的问题:https://secure.php.net/manual/en/mysqli-stmt.bind-param.php#102048
I had a problem with the LIKE operator
This code did not work:
<?php $test = $sql->prepare("SELECT name FROM names WHERE name LIKE %?%"); $test->bind_param("s", $myname); ?>
The solution is:
<?php $test = $sql->prepare("SELECT name FROM names WHERE name LIKE ?"); $param = "%" . $myname . "%"; $test->bind_param("s", $param); ?>