【问题标题】:SQL WHERE Clause with OR带有 OR 的 SQL WHERE 子句
【发布时间】:2020-07-25 08:05:42
【问题描述】:

我正在尝试在这行代码中添加一条记录“name2”,因此页面将显示 name1 或 name2 用户的文章。 这是当前代码,仅显示 name1 用户的文章。

$table = ARTICLE;
if (isContributor()) {
$sql = "SELECT * FROM $table WHERE name1=".$_SESSION['user_id'];

此代码适用于 name2 用户并显示文章:

$sql = "SELECT * FROM $table WHERE name2=".$_SESSION['user_id'];

当我想为两个用户显示文章时,我使用以下代码,但它破坏了页面:

$sql = "SELECT * FROM $table WHERE name1 OR name2=".$_SESSION['user_id'];

你能给我提供正确的代码行吗?

【问题讨论】:

  • @Dharman: .$_SESSION['user_id'] 是系统提供的值,没有输入。
  • @dnoeth 值来自哪里并不重要。输入是输入,应该全部参数化。 SQL注入真的没有任何借口。

标签: php sql where-clause


【解决方案1】:

这个 ORed 条件可以用 IN 重写,可能

$sql = "SELECT * FROM $table WHERE ".$_SESSION['user_id']" IN (name1,name2)";

【讨论】:

    【解决方案2】:

    尝试改变

    $sql = "SELECT * FROM $table WHERE name1 OR name2=".$_SESSION['user_id'];
    

    $sql = "SELECT * FROM $table WHERE name1=".$_SESSION['user_id']." OR name2=".$_SESSION['user_id'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2011-04-04
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多