mysql - SQL能这样表示吗?

查看:124
本文介绍了mysql - SQL能这样表示吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

SELECT * FROM shop WHERE id=8;

这条会输出本表中id=8的结果;
请问怎么输出全部结果?

就是

SELECT * FROM shop

只不过必须有 where id=???

???也就是通配符,任意值..


我问这个的意思是用预处理语句

$sql="SELECT id FROM shop2 WHERE name=? and id = ? and model = ?";
$stmt=$pdo->prepare($SQL);

$name=某值;
$id=某值;
$models=某值;

$stmt->execute( array($name,$id,$models) );

然后有时候,只需要 name 就能找到,有时候需要 name,model 才能找到,有时候需要 id ,name,model 才行.

我就想,只需要修改 成一个通配符 就可以不动 $sql 语句了'

如果这样不行,那只能重新编辑 sql 语句,用 字符串连接的方法弄了..弄成 :

$sql="SELECT id FROM shop2 WHERE ";

$idstr = $id ? "id = {$id}" :"";
$namestr = $name ? "name = {$name}" :"";
$modelstr= $model ? "model = {$models}" : "";

$arr=Array($idstr,$namestr,$modelstr);

$arr = Array_Filter($arr);

$sql.=implode(" AND ",$arr);

$stmt=$pdo->query($sql); 

这样比较麻烦,我就想有简单的办法吗?

大家告诉我有这个办法吗?

解决方案

不太懂题主意思。一般在代码里拼sql都会这样写SELECT * FROM TABLE WHERE 1 = 1,然后再根据查询条件拼接AND id = ?和其他条件,这样就算id为空也不至于发生sql语法错误。
写完后才觉得题主好像是想做sql注入……- -!

这篇关于mysql - SQL能这样表示吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆