【问题标题】:connection error while using mysql_real_escape_string() in php在 php 中使用 mysql_real_escape_string() 时出现连接错误
【发布时间】:2016-08-25 14:03:53
【问题描述】:

我在 php 中使用 mysql_real_escape_string() 使用 html php 表单在 mysql 数据库中插入数据。但是在提交时它给出了一个错误,即“警告:mysql_real_escape_string():无法建立到服务器的链接”但没有使用 mysql_real_escape_string() 表单正确提交。 我的php代码是

<?php
if(isset($_POST['add']))
{
    require_once('nikhil.php');
    $bookname=$_POST['bookname'];

    $discription=mysql_real_escape_string($_POST['discription']);
    $price=$_POST['price'];


    $dir='';
    $uploadDir = ''; 
    $fileName = $_FILES['photo']['name'];
    $filePath = $uploadDir . $fileName;

    if(move_uploaded_file($_FILES["photo"]["tmp_name"],"uploads/".$_FILES["photo"]["name"]))
    {
        $query_image = "INSERT INTO letDo (photo,bookname,price,discription,publicationName) VALUES ('$filePath','$bookname','$category','$releases','$price','$discription')";
        if(mysqli_query($con,$query_image))
        {
            echo "Stored in: " . "xyz.co " . $_FILES["image"]["name"];
        }
        else
        {
            echo 'File name not stored in database';
        }
    }
    else{echo 'File not uploaded';}
}
?>

【问题讨论】:

  • 混合mysql和mysqli!!
  • 而不是mysql_real_escape_string($_POST['discription']); 尝试使用mysqli_real_escape_string($conn,$_POST['discription']); 等等(自己检查其他人)。不要混合使用两者
  • thanxx 'Saty' 和 @Anant 它有效....
  • 警告:使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 不要使用手动转义和字符串插值或连接来完成此操作,因为如果您忘记正确转义某些内容,您将创建严重的SQL injection bugs。注意这里的$bookname没有被转义,所以这段代码是易受攻击的。

标签: php mysql


【解决方案1】:

如果您没有使用 mysql_connect 连接到数据库,那么您不应该使用 mysql_real_escape_string。如果你这样做了,那么它会尝试使用 php.ini 中的默认参数自行连接到数据库(你现在看到的结果)。看起来你正在使用 mysqli,这是一个完全不同的扩展,并且有自己的转义函数——mysqli_real_escape_string。改用它。

【讨论】:

  • ops srry 我忘记了我已经遇到过同样的问题,我使用 mysqli 解决了它,但我还是忘记了。谢谢你的帮助。
猜你喜欢
  • 2013-01-24
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
相关资源
最近更新 更多