带变量的Php mysql select语句(无效参数号:绑定变量数与令牌数不匹配)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了带变量的Php mysql select语句(无效参数号:绑定变量数与令牌数不匹配),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1546字,纯文字阅读大概需要3分钟。
内容图文
![带变量的Php mysql select语句(无效参数号:绑定变量数与令牌数不匹配)](/upload/InfoBanner/zyjiaocheng/892/8b431cfaf5f5489ab53926c23c660fac.jpg)
需要根据用户输入选择mysql数据.
例如,在输入表单(字段)中,用户输入日,月,年.并且需要获取(获取)与输入的日,月和年匹配的mysql数据.
这是我的代码:
if (strlen($_POST['date_day'] > 0)) {
$post_date_day = $_POST['date_day'];
$date_day = 'RecordDay = ?';
}
if (strlen($_POST['date_month'] > 0)) {
$post_date_month = $_POST['date_month'];
$date_month = ' and RecordMonth = ?';
}
if (strlen($_POST['date_year'] > 0)) {
$post_date_year = $_POST['date_year'];
$date_year = ' and RecordYear = ?';
}
if ( strlen( $_POST['date_day'] or $_POST['date_month'] or $_POST['date_year'] ) > 0 ) {
$where = 'WHERE';
}
$sql_prepare = $where .$date_day .$date_month .$date_year;
$sql_execute = array($post_date_day, $post_date_month, $post_date_year);
$sql = $db->prepare("SELECT * FROM 2_1_journal $sql_prepare ");
$sql->execute($sql_execute);
如果$_POST [‘date_day’]和$_POST [‘date_month’]和$_POST [‘date_year’]的strlen大于0,则脚本可以正常工作.
但是,例如,如果用户将年份留空(因为想要查看与日和月匹配的所有结果),则会收到错误SQLSTATE [HY093]:无效的参数编号:绑定变量的数量与令牌的数量不匹配.
不明白为什么不匹配令牌数量.因为
if (strlen($_POST['date_year'] > 0)) {
$post_date_year = $_POST['date_year'];
$date_year = ' and RecordYear = ?';
}
我想如果(strlen($_ POST [‘date_year’] == 0)那么$post_date_year和$date_year是空的;所以没有变量,也没有令牌.
可能我的解决方法是错误的,并且有一些好的工作方法…..
解决方法:
这是因为您以错误的方式使用圆括号
(strlen($_POST['date_year'] > 0))
你应该计算post变量,然后用圆括号括起$_POST [‘date_year’],然后比较为0
(strlen($_POST['date_year']) > 0)
内容总结
以上是互联网集市为您收集整理的带变量的Php mysql select语句(无效参数号:绑定变量数与令牌数不匹配)全部内容,希望文章能够帮你解决带变量的Php mysql select语句(无效参数号:绑定变量数与令牌数不匹配)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。