php real_escape_string

时间:2010-12-15 07:13:07

标签: php

我在PHP中发布了动态生成的文本框的数据。当我使用real_escape_string()发布数据时,即:

$ingredient = mysql_real_escape_string($_POST['ingredient']);

...它没有从文本框中发布数据,我使用简单的$_POST[''];方法,即:

$ingredient = $_POST['ingredient'];

...当我在文字中使用单引号(')时,它会给我错误。

  

您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第2行的“s”,“fgad”,“55”附近使用正确的语法

这是我的旧帖子,我通过启用magic_quotes_gpc = On在本地解决了问题,但是在我的服务器上上传它时它不再有效,所以我怎样才能打开服务器上的魔术引号。

4 个答案:

答案 0 :(得分:1)

您是否有开放式数据库连接? mysql_real_escape_string需要MySQL服务器才能与之通信才能运行。

答案 1 :(得分:0)

您可能想尝试

$ingredient = $_POST['ingredient'];

$ingredient = mysql_real_escape_string($ingredient);

答案 2 :(得分:0)

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$firstname', '$lastname', '$age')";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);
?>

你必须使用连接db看看 http://php.net/manual/en/mysqli.real-escape-string.php

你也可以使用
     string mysqli :: real_escape_string(string $ escapestr)

答案 3 :(得分:-1)

我认为这可能与“魔术”引号功能有关 - 请参阅此页面了解详情:Magic Strings & SQL

基本上,由于SQL注入攻击的问题,他们在特定版本的PHP之后使用引号预先转义字符串(我认为它是5.0,但我可能是错的)。因此,最终结果是,现在您的软件必须检查软件版本并根据字符串是否已经转义而采取不同的行为。

相关问题