Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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\u real\u escape\u字符串_Php_Mysqli - Fatal编程技术网

Php 如何正确使用mysqli\u real\u escape\u字符串

Php 如何正确使用mysqli\u real\u escape\u字符串,php,mysqli,Php,Mysqli,我有一个问题,我就是无法解决 在将名称保存到mysql数据库时,如果名称包含撇号(单引号),我会得到意外的结果 我使用$name=mysqli\u real\u escape\u字符串($con,$name)保存了名称其中,$con是连接字符串,$name是名称。然而,我得到的不是彼得·奥图尔,而是彼得·奥图尔 有人能告诉我哪里出了问题吗?当您将mysql改为mysqli时,不需要使用相同的样式,请使用准备好的语句 旧式 $name = mysqli_real_escape_string($_P

我有一个问题,我就是无法解决

在将名称保存到mysql数据库时,如果名称包含撇号(单引号),我会得到意外的结果

我使用
$name=mysqli\u real\u escape\u字符串($con,$name)保存了名称
其中,
$con
是连接字符串,
$name
是名称。然而,我得到的不是彼得·奥图尔,而是彼得·奥图尔


有人能告诉我哪里出了问题吗?

当您将mysql改为mysqli时,不需要使用相同的样式,请使用准备好的语句

旧式

$name = mysqli_real_escape_string($_POST['name']);
$email = mysqli_real_escape_string($_POST['email']);
$password = mysqli_real_escape_string($_POST['password']);

$sql = "INSERT INTO `user`(name, email, password) VALUES('$name', '$email', '$password'));

$mysql_query($sql) or die(mysql_error());
bind_param()
通知日期类型:

s => string
i => integer
d => double
b => blob
准备好的斯塔门特斯风格

$db = new mysqli(...);
$sql = "INSERT INTO `user`(name, email, password) VALUES(?,?,?)";
$stmt = $db->prepare($sql);
$stmt->bind_param('sss', $name, $email, $password);

if(!$stmt->execute()){
    echo $db->error;
}

如果你使用参数化查询(就像你应该做的那样),你就不必再转义字符串了。你能不能回答这个问题,或者提供一些信息让你的建议更人性化一点?我评论道,因为我没有时间写一个合适的答案。这并不是什么新鲜事(10年前发布),因此搜索mysqli prepared语句或mysqli参数化查询应该会给您带来大量的编写/教程。您所说的“您可以按要求回答问题还是提供…”是什么意思?好了,现在开始从数据库中获取信息