Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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和SQL语句进行签名_Php_Mysql_Sql_Insert - Fatal编程技术网

@使用导致错误的PHP和SQL语句进行签名

@使用导致错误的PHP和SQL语句进行签名,php,mysql,sql,insert,Php,Mysql,Sql,Insert,我现在正在使用一个PHP站点,它连接到一个数据库,并从我们的一个表中选择一个来比较信息。目前,我们在将电子邮件与表中的记录进行比较时遇到了@符号的问题 下面就是正在发生的事情: 我们使用SELECT语句来比较变量$Email,以找出帐户的关联ID。问题是,当与$Email进行比较时,我们打开了错误报告,我们可以看到@hotmail.com根据SQL语法标准导致了错误 $id = "SELECT idaccount FROM `animator`.`account` WHERE email = $

我现在正在使用一个PHP站点,它连接到一个数据库,并从我们的一个表中选择一个来比较信息。目前,我们在将电子邮件与表中的记录进行比较时遇到了@符号的问题

下面就是正在发生的事情:

我们使用SELECT语句来比较变量$Email,以找出帐户的关联ID。问题是,当与$Email进行比较时,我们打开了错误报告,我们可以看到@hotmail.com根据SQL语法标准导致了错误

$id = "SELECT idaccount FROM `animator`.`account` WHERE email = $Email";
$result = mysqli_query($dbc, $id) or die("Error: ".mysqli_error($dbc));
结果如下:

    Error: You have an error in your SQL syntax; check the manual that corresponds to your     MySQL server version for the right syntax to use near '@hotmail.com' at line 1

有人有什么想法吗?

您应该用单引号括起$Email值,因此生成的语句如下所示:

SELECT idaccount FROM `animator`.`account` WHERE email = 'something@hotmail.com'

更妙的是,你应该准备对账单并绑定$Email的价值。看看这里:

使用$Email前后的引号as='$Email',为了安全起见,您可以使用
mysqli\u real\u escape\u字符串($dbc,$Email)
而不是
$Email
。前后的单引号应该保持不变,看起来像是“…”。mysqli\u real\u escape\u string($dbc,$Email)。“…”谢谢Salim!这样一个新手的错误!!!很抱歉浪费时间,伙计们,感谢你们的回复!在数据库的测试完成后添加准备好的语句。我们只是试图让所有的工作,然后将切换到准备好的SQL注入保护语句。谢谢你们的帮助!