php - 如何在mysqli prepare语句查询中使用 'or'

标签 php mysql mysqli prepared-statement

我是 mysqli prepare 语句的新手,很惊讶地发现 ||在 mysqli 准备语句查询中没有按预期工作。 我有一个检查用户是否注册的函数,它的评估应该基于唯一的行 ID 和电子邮件地址。此外,由于 id 列和电子邮件列是不同类型的,它们是 Int(11) VARCHAR,所以我假设使用 bind_param 会遇到一些麻烦,因为不同的数据类型

public function checkUserRegistered($iden){
 //The iden can be either a id or a email address
            $stmt = $this->connection->prepare("SELECT `id` FROM `$this->table_name` WHERE (`email`= ?  || `id`= ?) LIMIT 1 ");
            $stmt->bind_param('s',$iden); // s or i ?
            if($stmt->execute()){
                $result = $stmt->get_result();
                if($result->num_rows ==1){
                    $stmt->close();
                    return true;
                }else{
                    return false;
                }
            }
        }

这样做的正确方法是什么,我是否必须使用单独的函数来代替?

最佳答案

你需要像这样绑定(bind)两个参数:

$stmt->bind_param('si',$iden, $iden);

因为你设置了两个 '?'。

s 表示字符串,i 表示整数,b 是 blob,d 是 double。

关于php - 如何在mysqli prepare语句查询中使用 'or',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831806/

相关文章:

php - PHP 和 MySQL 中的 INSERT 查询语法错误

php - 带有特殊字符的 DOMDocument appendXML

mysql - 存储过程更新MYSQL中的单引号

mysql - 如何对一张表中的相同(参数)记录进行求和和分组 MySQL

php - Mysqli查询函数插入重复行

php - Yii2 - 在 GridView 中按一对多对一关系排序和过滤

php - 如何限制每行 1 个等于相同值的行

mysql - 重复求和运算

php - 检索所有行但缺少第一条记录

php - 我可以在 PHP 中混合使用 MySQL API 吗?