【问题标题】:Warning: mysql_real_escape_string(): Access denied for user ''@'localhost' (using password: NO)警告:mysql_real_escape_string():拒绝用户''@'localhost'的访问(使用密码:否)
【发布时间】:2013-07-26 01:18:50
【问题描述】:

什么时候使用下面没有mysql_real_escape_string的代码,工作正常。我只是想抓住一个可能有帖子的文本字符串。从输入表单并将其格式化以放入 mysql 表中。

    <?php
    $filenamee = $_FILES["file"]["name"];
    $filename =strval($filenamee);
    echo "file name is".$filename;

     $con=mysqli_connect("localhost","blasbott_admin","lubu1973","blasbott_upload");
     // Check connection
     if (mysqli_connect_errno())
       {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }
 $companyName = mysql_real_escape_string($_POST['companyName']);
// $companyName = mysql_real_escape_string($companyNamee);
 //$companyName = mysql_real_escape_string($companyNamee);

$sql="INSERT INTO ads (companyName, webSite, picture)
 VALUES ('$companyName','$_POST[webSite]','$filename')";

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

mysqli_close($con);
 ?> 

【问题讨论】:

  • 我经常看到这类问题,你应该阅读common database debugging for PHP and MySQL
  • 这些是您实际的数据库连接详细信息吗?
  • 您是否考虑过使用准备好的语句而不是转义 $_POST 数据?您正在尝试转义 companyName,但随后您直接将 Posting['website'] 放入您的查询中。
  • 没有实际值;只是愚弄当地人,直到我建造出实际的东西。我会看看准备好的陈述。我知道的不多,但是有人警告过我有关 mysql 注入的事情。谢谢你的帮助;爱这里的人。
  • 谢谢 Jason,我确实首先阅读了一些关于此的帖子。将 mysqli_real_escape_string 与 mysql_real_escape_string 混合是一个新手错误,但我很高兴我做到了并了解了 mysql 注入,南海岸网络引导我准备好声明,thx south

标签: php mysql forms


【解决方案1】:

此处提供了一个可以解决此问题的工作代码示例:

http://www.w3schools.com/php/func_mysqli_real_escape_string.asp

【讨论】:

  • 你为什么回答这个老问题?
  • 我遇到了问题,遇到了这个帖子,所以决定把它留在这里,留给那些在谷歌上搜索相同内容的人。年龄与某些问题或多或少无关,这里的答案并没有以我可以理解的方式解决问题。我链接到的示例是更明显和明确的解决方案。
【解决方案2】:

在使用警告前必须先连接数据库:mysql_real_escape_string()

【讨论】:

    【解决方案3】:

    您面临 MySQL 注入的风险。切勿在没有先进行某种投影的情况下将数据直接插入数据库。这是一个重大的安全风险。也使用 mysqli_real_escape_string 代替,并注意你的 $_POST[webSite] 是不受保护的。

    另外,您的错误意味着您的数据库详细信息不正确。

    【讨论】:

    • 更改为 mysqli_real_escape_string 解决了问题。阅读 mysql 注入以保护数据库。谢谢
    • 感谢您提醒我注意这些安全风险。 mysqli_real_escape_string 解决了这个问题,但我不知道 mysql 注入;谢谢。
    • mysqli_real_escape_string 是我的解决方案。没有意识到我在使用 mysqli 时必须使用它。有道理,因为它使用您打开的连接。
    【解决方案4】:

    改用mysqli_real_escape_string

    【讨论】:

      【解决方案5】:

      不,你不应该混合使用 mysql 和 mysqli。

      在这里使用而不是mysql_real_escape_string($var):

      $con->real_escape_string($var);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 2016-01-10
        • 2013-07-08
        • 1970-01-01
        • 2022-12-14
        相关资源
        最近更新 更多