mysql bind variable_警告:mysqli_stmt_bind_param:类型定义字符串中的元素数与绑定变量数不匹配[重复](Warning: mysqli_stmt_bind_pa...

警告:mysqli_stmt_bind_param:类型定义字符串中的元素数与绑定变量数不匹配[重复](Warning: mysqli_stmt_bind_param: Number of elements in type definition string doesn't match number of bind variables [duplicate])

我收到的消息“

警告:mysqli_stmt_bind_param:类型定义字符串中的元素数与...中的绑定变量数不匹配

在一个简单的PHP选择语句中

$wherePtest1 = "postcode= ? AND proptype = ? AND ";

$whereVtest1 = "$lc_postcode, $proptype";

$where_no_andP = rtrim($wherePtest1, 'AND ');

var_dump($where_no_andP);

var_dump($whereVtest1);

/* 1. create a prepared statement */

if ($stmt1 = mysqli_prepare($link, "SELECT $what_select4TS FROM $table WHERE $where_no_andP ORDER BY rent $reihenach LIMIT $offset, $rowsPerPage"))

{

/* 2. bind parameters for markers */

mysqli_stmt_bind_param($stmt1, "ss", $whereVtest1);

/* 3. execute query */

etc

我收到此警告即使var_dump()正确显示

string(29) "postcode= ? AND proptype = ?"

string(9) "da8, Flat"!

I am getting the message “

Warning: mysqli_stmt_bind_param: Number of elements in type definition string doesn't match number of bind variables in…

in a simple php select statement

$wherePtest1 = "postcode= ? AND proptype = ? AND ";

$whereVtest1 = "$lc_postcode, $proptype";

$where_no_andP = rtrim($wherePtest1, 'AND ');

var_dump($where_no_andP);

var_dump($whereVtest1);

/* 1. create a prepared statement */

if ($stmt1 = mysqli_prepare($link, "SELECT $what_select4TS FROM $table WHERE $where_no_andP ORDER BY rent $reihenach LIMIT $offset, $rowsPerPage"))

{

/* 2. bind parameters for markers */

mysqli_stmt_bind_param($stmt1, "ss", $whereVtest1);

/* 3. execute query */

etc

I am getting this warning EVEN THOUGH var_dump() correctly show

string(29) "postcode= ? AND proptype = ?"

string(9) "da8, Flat"!

原文:https://stackoverflow.com/questions/39625230

2020-03-21 12:03

满意答案

因为这:

mysqli_stmt_bind_param($stmt1, "ss", $whereVtest1);

^^

MySQLi 不会将您的CSV数据$whereVtest1并将其拆分。 您必须为每个占位符明确提供一个SINGLE值:

mysqli_stmt_bind_param($stmt1, 'ss....s', $val1, $val2, .... $valN);

^----------^

^------------------^

^------------------------^

Because this:

mysqli_stmt_bind_param($stmt1, "ss", $whereVtest1);

^^

MySQLi will NOT take your CSV data in $whereVtest1 and split it up for you. You have to EXPLICITLY provide a SINGLE value for EVERY placeholder you have:

mysqli_stmt_bind_param($stmt1, 'ss....s', $val1, $val2, .... $valN);

^----------^

^------------------^

^------------------------^

2016-09-22

相关问答

MySQLi::error和MySQLi::errno是RDBMS返回给PHP的错误代码和消息的容器, 而不是设置语句时PHP代码中遇到的错误。 对bind_param()的错误调用bind_param()参数不足)显然不会与RDBMS通信,因此不会从RDBMS接收错误。 根据文档 , bind_param()在失败时返回一个布尔值FALSE 。 因此,您需要验证它是否已成功调用。 $rs = $st->bind_param('is', $val);

if ($rs) {

$st->execu...

它使用C API,因此在这种情况下,SQL注入是没有机会的。 It uses the C API, so in this case there is no chance for SQL injection.

$stmt->bind_param(''.$typeok.'',$paramok);

缺少你试图插入的变量类型? 地方 $stmt->bind_param('ss', ''.$typeok.'', $paramok);

您可以在这里阅读使用数字,字符串等时应使用的字符: http://php.net/manual/en/mysqli-stmt.bind-param.php 类型 包含一个或多个字符的字符串,用于指定相应绑定变量的类型: $stmt->bind_param(''.$typeok....

$sql = 'INSERT INTO users (user_email, user_name, user_pref, user_password)

VALUES(?, ?, ?, des_encrypt(substring(md5(rand()),1,8)))';

仅定义3个占位符,但您尝试写入4个占位符。 $stmt->bind_param('ssss', $_POST['user_email'], $_POST['user_name'], $_POST['user_pref'...

我认为你的连接文件mysqli_connect.php可能有问题 这是我的代码供您参考 define("DB_HOST", "localhost");

define("DB_USERNAME", "username");

define("DB_PASSWORD", "password");

define("DB_NAME", "database name");

$dbc = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

通...

其实你有0 ? s和2个参数。 的? 只能在字符串之外工作。 mysqli_prepare将'%(?)%'为占位符,而不是字符串。 您需要将%添加到您要绑定的变量中...像这样: $stmt = mysqli_prepare($link, "

select e.emp_id, e.first_name, e.last_name, e.hire_date, d.dept_name

from employee e, department d

where e.dept_id = ...

简单的错误...呃。 我讨厌那个。 不是我的信用。 $bind = 'siiiiissssiss'; // No commas

Simple mistake... Ugh. I hate that. Not my credit. $bind = 'siiiiissssiss'; // No commas

问题是在选择你选择2列以上并且只在mysqli_stmt_bind_result绑定2, mysqli_stmt_bind_result ,select中的列数必须与mysqli_stmt_bind_result的相同数量的变量mysqli_stmt_bind_result 要修复,改变 SELECT * from admins WHERE user_email=? AND user_pass=?

至: SELECT user_mail, user_pass from admins WHERE ...

$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');

$stmt->bind_param('ss', $param[0], $param[1]);

$stmt->execute();

//other version

$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');

$type = "ss...

因为这: mysqli_stmt_bind_param($stmt1, "ss", $whereVtest1);

^^

MySQLi 不会将您的CSV数据$whereVtest1并将其拆分。 您必须为每个占位符明确提供一个SINGLE值: mysqli_stmt_bind_param($stmt1, 'ss....s', $val1, $val2, .... $valN);

...

相关文章

Java Number类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、

...

写like语句的时候 一般都会写成 like '% %' 在mybatis里面写就是应该是

...

在编写后台登陆模块时,将许多默认的设置放在一个名为default的package 里。然后再定义其他

...

Java String类 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提

...

命令格式: SET key value 把字符串值value存储到key中。如果存在此key,SE

...

今天遇见一个问题.不知道怎么解决. 如: 自己建立了一个文件read.txt 里面存放这样的 键值

...

在使用jsp生成web图片时遇到这个问题,这是源代码中的一条语句,源代码可以执行,可是一将源码放入ec

...

JDK之前,switch条件表达只能是与整型兼容的类型(char,byte,short,int,Cha

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值