为了账号安全,请及时绑定邮箱和手机立即绑定

使用预处理语句时如何绑定带有空格的参数?

使用预处理语句时如何绑定带有空格的参数?

PHP
慕神8447489 2019-03-10 22:55:11
一个简单的数据表: 我想用预处理方式将数据表以数量num倒序排列: <?php header('content-type:text/html;charset:utf-8'); $mysqli = new mysqli('localhost', 'root', '', 'info'); $stmt = $mysqli->prepare("SELECT * FROM test ORDER BY ?"); $dst = 'num desc'; $stmt->bind_param('s', $dst); $stmt->execute(); $result = $stmt->get_result(); $str = '<table width="50%" border="1" cellspacing="0" cellpadding="0">'; $str .= '<tr><th>id</th><th>名称</th><th>数量</th><th>价格</th></tr>'; while ($row = $result->fetch_assoc()) { $str .= '<tr align="center"><td>'.$row['id'].'</td><td>'.$row['name'].'</td><td>'.$row['num'].'</td><td>'.$row['price'].'</td></tr>'; } $str .='</table>'; echo $str; $stmt->close(); $mysqli->close(); ?> 但是不起作用: 数据库上没问题: 另外无法以"SELECT * FROM test ORDER BY ? ?"的形式进行预处理,会报错。求大佬帮忙看下怎么解决这个问题?
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

预处理 处理的是参数,是把?替换成相应的安全字符串,order 的参数是字段名,不是字符串。这儿应该判断一下字段名,然后直接拼 sql.
你的 sql 是 order by "num", 不是 order by num

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 460 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信