如何在MYSQLI中使用逻辑运算符 - PHP

时间:2014-11-10 18:02:01

标签: php mysql mysqli

我写了一个简单的select语句,由于连接对象是mysqli,我不能使用AND,&& ,或者像操作员一样给出错误

function getdata($value1,$value2)
{
global $conn;
$query = "SELECT id, name from users WHERE id!=$value1 && email==$value2 ";
$result = $conn->query($query);
}

这不起作用: - (

错误:尝试获取非对象的属性.. bla bla ..
这意味着我的sql语句有问题,因为当我尝试没有逻辑运算符时,它可以工作,但没有使用过程。

使用预备声明&绑定参数 我提到了这个帖子SELECT in MYSQLI,并尝试了准备语句..但我做错了我猜

$query=$conn->prepare("SELECT id, name from users WHERE id!=? && email==?");
    $query->bindParam("ss", $value1,$value2); // line 20 error points here
    $query->execute();

错误:

Call to a member function bindParam() on a non-object in /mydir/file.php line 20

P.S。 var_dump($query);返回bool(false)

3 个答案:

答案 0 :(得分:1)

SELECT id, name FROM users WHERE id <> $value1 AND email = '$value2'"

<>!=是一样的。 AND&&是相同的。您可能会看到AND<>因为它是SQL中的标准。问题是平等运算符是=而不是==

在问题的第二部分,ss是错误的。 d用于类型double,s用于字符串。

$query=$conn->prepare("SELECT id, name from users WHERE id != ? && email = ?");
$query->bind_param('ds', $value1, $value2);
$query->execute();

您可以在php bind_param function help上查看类型。

答案 1 :(得分:1)

您的查询中存在多个问题。

  
      
  1. 使用&#39; =&#39;而不是&#39; ==&#39;作业。
  2.   
  3. 在第一部分中您已将查询分配给变量$ query,并使用变量$ sql运行查询(错误)
  4.   

修改后的代码如下所示:

$query = "SELECT id, name from users WHERE id!='$value1' AND email='$value2'";
$result = $conn->query($query);

答案 2 :(得分:0)

&&替换为AND

用&#34; =&#34;

替换==

返回false,但由于您遇到mysq l语法错误,您还可以尝试启用错误报告以查看异常