php - 如何缩短函数查询?

标签 php mysql function

你好,我有这个功能:

function mail_exists($email){
    global $db;
    $email = sanitize($email);
    $query = $db->query("SELECT Email FROM table1 WHERE Email= '$email' ");
    $check = $query->num_rows;
    $query2 = $db->query("SELECT Email FROM table2 WHERE Email= '$email' ");
    $check2 = $query->num_rows;
    return ($check > 0 || $check2 > 0) ? true : false;
}

首先,我想知道如何通过仅使用一个查询来缩短它,第二件事是,为什么在使用两个查询时这不起作用?两个表具有不同的结构。在表1中,字段电子邮件为否。 16,在table2上它是字段6。

非常感谢。

最佳答案

首先,您在最后几行中犯了一个逻辑错误*here:$query->num_rows;应该是:$query2->num_rows; 然后结果是:

function mail_exists($email){
    global $db;
    $email = sanitize($email);
    $query = $db->query("SELECT Email FROM table1 WHERE Email= '$email' ");
    $check = $query->num_rows;
    $query2 = $db->query("SELECT Email FROM table2 WHERE Email= '$email' ");
    $check2 = $query2->num_rows; // *here
    return ($check > 0 || $check2 > 0) ? true : false;
}

其次,如果您正在处理两个完全不同的上下文,则应该使用两个不同的查询。不需要时不要加入查询。如果您只是计算行数,您可以轻松做到:

function mail_exists($email){
    global $db;
    $email = sanitize($email);
    $query = $db->query("SELECT COUNT(*) FROM table1 WHERE Email= '$email' ");
    $query2 = $db->query("SELECT COUNT(*) FROM table2 WHERE Email= '$email' ");
    $count1 = $query->fetch_row();
    $count2 = $query2->fetch_row();
    return ($count1[0] || $count2[0]);
}

SQL COUNT() 函数为您提供最高效的行计数方式。

关于php - 如何缩短函数查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15163637/

相关文章:

php - 如何检查对象是否具有 Symfony2 中的方法

php - 使用 curl 在电报机器人中发送消息

MySQL查询: select all active in a table but accept an inactive which id = 1

javascript - 如何从字符串中的方法名称调用 javascript 函数?

php - Codeigniter 将新键和值添加到 foreach 循环内的对象 (stdClass)

php - PHP 脚本可以反序列化使用 Perl 创建的可存储文件吗?

mysql一次更改复制多条记录

javascript - PHP登录脚本重定向在登录后不起作用

Javascript - 关于对象

javascript - 为什么是 "TypeError: f is not a function"?