[英]mysqli_real_escape_string() returns empty string
我在电子邮件地址上使用mysqli_real_escape_string(),它返回一个空字符串。 它使用任何电子邮件地址执行此操作。
<?php
//from previous page - submitted by user.
$_POST['email']="aehmlo@aehmlo.com";
$_POST['password']='mypass1234';
//Link, I can verify it works.
$mysql_info=array(
"url"=>"url",
"username"=>"username",
"password"=>"password",
"database"=>"database"
);
$link=mysqli_connect($mysql_info['url'],$mysql_info['username'],$mysql_info['password'],$mysql_info['database']);
//Now I attempt to sanitize the user input.
$email=mysqli_real_escape_string($link,$_POST['email']);
$password=sha1(mysqli_real_escape_string($link,$_POST['password']));
var_dump($email);
var_dump($password);?>
我表的排序规则是“ latin1_swedish_ci”。
如果您的连接为空( $link
),它将返回一个空字符串。 我对此进行了测试,效果很好。 我建议您向连接添加错误处理并启用错误报告。
<?php
$link = mysqli_connect("localhost", "root", "root", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$_POST['email'] = "aehmlo@aehmlo.com";
$email = mysqli_real_escape_string($link, $_POST['email']);
var_dump($email);
mysqli_close($link);
?>
结果
string(17) "aehmlo@aehmlo.com"
我遇到了这个问题,发现我的字符集设置为拉丁文。 通过放置解决
$con->set_charset("utf8");
在real_escape_string之前。 程序风格为mysqli_set_charset。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.