繁体   English   中英

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);

是什么导致此错误? 我只将一个变量传递给查询。 那么为什么显示此错误消息?

看看mysqli_stmt::bind_param方法的文档页面上的mysqli_stmt::bind_param ,有人遇到了完全相同的问题: https : mysqli_stmt::bind_param #102048

我对LIKE运算子有疑问

该代码不起作用:

 <?php $test = $sql->prepare("SELECT name FROM names WHERE name LIKE %?%"); $test->bind_param("s", $myname); ?> 

解决方案是:

 <?php $test = $sql->prepare("SELECT name FROM names WHERE name LIKE ?"); $param = "%" . $myname . "%"; $test->bind_param("s", $param); ?> 

如果您有权访问数据库,建议您创建一个存储过程。

然后创建如下:

getNames(
    IN nameVAR VARCHAR(256)
)

SELECT * FROM namebase WHERE name LIKE ‘%nameVAR%’;

然后在您的php中调用getName(?)而不是放入当前语句

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM