Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
Php 选择使用电子邮件地址_Php_Mysql_Sql - Fatal编程技术网

Php 选择使用电子邮件地址

Php 选择使用电子邮件地址,php,mysql,sql,Php,Mysql,Sql,我正在使用PHP和PDO 尝试使用电子邮件作为键从表中检索记录。当电子邮件直接在sql语句中给出时,它工作正常 但当我在“$bio_email”字段中发送电子邮件时,它不起作用。表中的电子邮件字段类型为“varchar” 我试过几种方法,但都不管用。系统返回的错误在sql语句的右侧 这是我的密码 $bio_email = $applicantinfo->user_email; // email from a table $sql = "SELECT * FROM tb_files

我正在使用PHP和PDO

尝试使用电子邮件作为键从表中检索记录。当电子邮件直接在sql语句中给出时,它工作正常

但当我在“$bio_email”字段中发送电子邮件时,它不起作用。表中的电子邮件字段类型为“varchar”

我试过几种方法,但都不管用。系统返回的错误在sql语句的右侧

这是我的密码

$bio_email      = $applicantinfo->user_email; // email from a table
$sql = "SELECT * FROM tb_files_upload WHERE ";
$sql .= " email = 'applicant1@live.ca' "; // THIS WORKS FINE
//$sql .= " email = 'danilo.gonzalez@parkinson.ca' "; // THIS WORKS FINE
//$sql .= " email = $bio_email "; // DOES NOT WORK  ... syntax to use near '@live.ca' at line 1
//$sql .= " email = {$bio_email} "; // DOES NOT WORK  ... syntax to use near '@live.ca' at line 1
//$sql .= " email = '{$bio_email}' "; // DOES NOT WORK ... syntax to use near ''applicant1@live.ca'' at line 1
//$sql .= " email = '$bio_email' "; // DOES NOT WORK ... syntax to use near ''applicant1@live.ca'' at line 1

$biosketchs = Tb_Files_Upload::find_by_sql($sql);
在同一个表中,我还有一个字段“dateReceived”。我想要2.5年的记录。你能帮我做这个吗。

我会试试看

$sql .= " email = '$bio_email' ";
对于dateReceived,只需为月份和年份指定日期

dateReceived >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 6 MONTH), INTERVAL 2 YEAR)
或者我们别傻了,直接用18个月

$sql.= " AND dateReceived >= DATE_SUB(CURDATE(), INTERVAL 18 MONTH)";
我会试试看

$sql .= " email = '$bio_email' ";
对于dateReceived,只需为月份和年份指定日期

dateReceived >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 6 MONTH), INTERVAL 2 YEAR)
或者我们别傻了,直接用18个月

$sql.= " AND dateReceived >= DATE_SUB(CURDATE(), INTERVAL 18 MONTH)";

谢谢,这封邮件很好用。对于日期范围,我尝试了以下方法:$sql.=“dateReceived>=date_SUB(CURDATE(),INTERVAL 2 YEAR)”,但它选择了所有内容,我需要从以前的2.5版本中选择记录years@Danilo很抱歉,错过了dateReceived部分。已编辑。谢谢,这对电子邮件很有效。对于我尝试的日期范围:$sql.=“dateReceived>=date\u SUB”(CURDATE(),INTERVAL 2 YEAR)”,但它选择了所有内容,我需要从以前的2.5版本中选择记录years@Danilo抱歉,错过了dateReceived部分。已编辑。