Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL SELECT语句检查不使用PHP变量的重复电子邮件_Php_Sql_Variables - Fatal编程技术网

SQL SELECT语句检查不使用PHP变量的重复电子邮件

SQL SELECT语句检查不使用PHP变量的重复电子邮件,php,sql,variables,Php,Sql,Variables,我有一个订阅组件,它是一个简单的表单,如下所示: <form id="newsletter_subscribe"> <label class="label-margin">Email<span class="required-field">*</label> <input type="email" name="mailinglistEmail"> <input type="submit"

我有一个订阅组件,它是一个简单的表单,如下所示:

<form id="newsletter_subscribe">        

    <label class="label-margin">Email<span class="required-field">*</label>
    <input type="email" name="mailinglistEmail">

    <input type="submit" value="Subscribe" class="subscribe-button float-r"> 
    <div class="clear_float"></div>

 </form>
}))

现在在进程文件中,在插入数据库之前,我想检查电子邮件是否已经在数据库中!我试着这样做:

$data = json_decode(file_get_contents('php://input'), true);

$vMailinglistDate = date('Y-m-d');

$vMailinglistEmail = strtolower(trim($data['mailinglistEmail']));   

$sql_mailinglist = "SELECT * FROM tblmailinglist WHERE MailinglistEmail = $vMailinglistEmail " ;

require('cms/inc-conn-tekiah.php');

$rs_mailinglist = mysqli_query($vConnTekiah, $sql_mailinglist);

$rs_mailinglistRows = mysqli_fetch_assoc($rs_mailinglist);

if ($rs_mailinglistRows === 0) {            

    require('inc-conn-tekiah.php');
    require('inc-function-escapestring.php'); 

    //FORMULATE THE INSERT STATEMENT    
    $sql_subscribe = sprintf("INSERT INTO tblmailinglist (MailinglistDate, MailinglistEmail) VALUES (%s, %s)",
    escapestring($vConnTekiah, $vMailinglistDate, 'text'),
    escapestring($vConnTekiah, $vMailinglistEmail, 'text')
    );

    $sql_subscribeResult = mysqli_query($vConnTekiah, $sql_subscribe);
。。。等。插入过程继续

在测试并试图找出为什么这不能产生我想要的结果之后,我发现这是因为来自查询的mysqli_结果为空!尽管我测试的电子邮件肯定已经在数据库中了

更多的测试表明,如果我使用这个select语句,并将我正在测试的电子邮件作为字符串用单引号输入,它工作得很好:

"SELECT * FROM tblmailinglist WHERE MailinglistEmail = 'test@gmail.com' ";
但是使用变量,SELECT语句输出一个字符串,该字符串看起来像这样,显然不起作用:

"SELECT * FROM tblmailinglist WHERE MailinglistEmail = test@gmail.com ";
我能看到的唯一区别是第一个版本中的单引号似乎使它起作用。但真正令人困惑的是,我在前面的SELECT语句中使用了变量,根本没有任何问题


因此,我的问题是,我应该采取什么方法来构造SELECT语句,以使用我拥有的信息(以测试是否已在数据库中的形式发送的电子邮件)来测试重复的电子邮件。

第一种方法。这就是mysql中的语法。因此,请自己添加单引号

$sql_mailinglist = "SELECT * FROM tblmailinglist WHERE MailinglistEmail = '$vMailinglistEmail' " ;
                                                                          ^                  ^

第一种方法。这就是mysql中的语法。因此,请自己添加单引号

$sql_mailinglist = "SELECT * FROM tblmailinglist WHERE MailinglistEmail = '$vMailinglistEmail' " ;
                                                                          ^                  ^

完美的我试着把单引号连在一起,但那是一团糟。不知道为什么我没有想到像那样加入它们!非常感谢,太好了!我试着把单引号连在一起,但那是一团糟。不知道为什么我没有想到像那样加入它们!非常感谢你。