我有一张这样的表
id ' type ' title <br>
1 ' Signature ' Sample signature <br>
2 ' Documents ' Sample documents <br>
3 ' Scholarship ' Sample scholarship <br>
和sql
$info = array('Signature','Documents');
$sql="SELECT * FROM tbl_docs WHERE type='$info'";
但为什么签名和文件没有显示?
答案 0 :(得分:0)
SQL WHERE
子句采用<var> = <value>
形式的表达式,其中value是原子的。如果您需要多个值,可以使用<var> IN <value list>
。您的查询将起作用,但如果用户可以输入值,则会出现SQL注入漏洞。最好有一个包含要匹配的项的表,然后加入这两个表。
答案 1 :(得分:0)
使用: -
$sql="SELECT * FROM tbl_docs WHERE type in '$info'";
答案 2 :(得分:0)
您正在尝试将数组连接到字符串,这需要工作
示例: http://codepad.org/BDhfzxjj
如果您正在尝试检索类型等于Signature或Document的文档,那么最好的方法是使用带有sql的IN
语句。
从阵列中执行此操作的一种有效方法是使用implode。
$info = array('Signature','Documents');
$sql = "SELECT * FROM tbl_docs WHERE type in ('".implode('\', \'',$info)."')";
示例:http://codepad.org/55Ef9zqr
运行中的Sql代码:http://sqlfiddle.com/#!9/d91d0/1
答案 3 :(得分:0)
这样做的正确方法就是这样......
您必须使用 IN 子句
$var=join(',',$info);
$sql = "SELECT * FROM tbl_docs WHERE type IN ($var)";