【问题标题】:Search different value from a table从表中搜索不同的值
【发布时间】:2015-03-16 12:02:27
【问题描述】:

我有一张这样的桌子

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

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

【问题讨论】:

  • 您如何将SignatureDocuments 值分配给数组$info
  • 你试过echo $sql吗?因为它会打印SELECT * FROM tbl_docs WHERE type='Array'

标签: php mysql xampp


【解决方案1】:

您正在尝试将数组连接到字符串,这需要工作

示例: 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

【讨论】:

  • 有一条消息显示这一点。 “where 子句”中的未知列“签名”
  • @SchyronSy 我忘记了单引号。用更多示例编辑我的帖子?告诉我它是否有效?
【解决方案2】:

SQL WHERE 子句采用&lt;var&gt; = &lt;value&gt; 形式的表达式,其中值是原子的。如果您需要多个值,您可以使用&lt;var&gt; IN &lt;value list&gt;。您的查询将起作用,但如果用户可以输入值,则存在 SQL 注入漏洞。最好有一个包含要匹配项的表,然后将两个表连接起来。

【讨论】:

    【解决方案3】:

    使用这个:-

    $sql="SELECT * FROM tbl_docs WHERE type in '$info'";
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    【解决方案4】:

    那么正确的做法是这样的..

    你必须使用 IN 子句

    $var=join(',',$info);  
    $sql = "SELECT * FROM tbl_docs WHERE type IN ($var)"; 
    

    【讨论】:

    • 有一条消息显示这一点。 “where 子句”中的未知列“签名”
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多