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);
这样比较麻烦,我就想有简单的办法吗?
大家告诉我有这个办法吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不太懂题主意思。一般在代码里拼sql都会这样写
SELECT * FROM TABLE WHERE 1 = 1,然后再根据查询条件拼接AND id = ?和其他条件,这样就算id为空也不至于发生sql语法错误。写完后才觉得题主好像是想做sql注入……- -!
这样应该能够把全部的结果输出。
在java中,有mybatis这样的框架来处理类似参数个数不确定的请求,具体用法可以自己百度。
如果php中没有类似的框架,最好的是自己写一个拼接sql字符串、绑定变量的方法,php不熟悉,写一个示例js代码:
第一参数为不带任何条件的sql语句(如select * from table1),第二个参数为key-value类型的参数值
where子句可选
SELECT * FROM shop;select * from shop where id like '%'