从表中搜索不同的值

时间:2015-03-16 12:02:27

标签: php mysql xampp

我有一张这样的表

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'";

但为什么签名和文件没有显示?

4 个答案:

答案 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)";