我写了一个简单的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)
答案 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)
您的查询中存在多个问题。
- 使用&#39; =&#39;而不是&#39; ==&#39;作业。
- 在第一部分中您已将查询分配给变量$ query,并使用变量$ sql运行查询(错误)
醇>
修改后的代码如下所示:
$query = "SELECT id, name from users WHERE id!='$value1' AND email='$value2'";
$result = $conn->query($query);
答案 2 :(得分:0)
将&&
替换为AND
,
用&#34; =&#34;
替换==
返回false
,但由于您遇到mysq
l语法错误,您还可以尝试启用错误报告以查看异常