Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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 mysqli_real_escape_string()返回空字符串_Php_Mysql - Fatal编程技术网

Php mysqli_real_escape_string()返回空字符串

Php mysqli_real_escape_string()返回空字符串,php,mysql,Php,Mysql,我在电子邮件地址上使用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( "u

我在电子邮件地址上使用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"
字符串(17)”aehmlo@aehmlo.com“我遇到了这个问题,发现我的字符集被设置为拉丁文。通过推杆解决

$con->set_charset("utf8");

在真正的逃逸字符串之前。将是程序风格的mysqli_set_charset。

对不起,我的问题是:为什么会返回空字符串,我可以做些什么来修复它?能否请您在代码中添加错误处理?您的意思是类似错误报告(E_ALL);?已经有了。没有。请按照下面我的回答中的错误处理程序检查连接。结果是我的web主机在没有告诉我的情况下更改了套接字的位置。谢谢。最好实现一个错误处理程序。在本例中,它会将您指向该连接。我实现了一个连接,然后将其用于生产。您可以在脚本中打开/关闭错误报告,以便在它投入生产时可以禁用它。