mysql_query():用户''@'localhost'的访问被拒绝[重复]

Posted

技术标签:

【中文标题】mysql_query():用户\'\'@\'localhost\'的访问被拒绝[重复]【英文标题】:mysql_query(): Access denied for user ''@'localhost' [duplicate]mysql_query():用户''@'localhost'的访问被拒绝[重复] 【发布时间】:2016-03-09 15:20:00 【问题描述】:

我看到有很多类似的问题,但我没有找到任何有类似代码的人。

脚本将文件上传到服务器,但我还想插入有关已上传文件的数据。文件按应有的方式上传,没有错误,但 phpmyadmin 中的表保持为空。

error_log 中的错误:

PHP Warning:  mysql_query(): Access denied for user ''@'localhost' (using password: NO) in *path*/upload.php on line 65
PHP Warning:  mysql_query(): A link to the server could not be established in *path*/upload.php on line 65

当我得到输出“Localhost via UNIX socket 127.0.0.1 via TCP/IP”而不是网站上的 mysql 警告/错误时,连接似乎正常工作。

连接脚本(uploadconnect.php):

<?php
$mysqli = new mysqli("localhost", "*username*", "*password*", "*database*");
    if ($mysqli->connect_errno) 
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    
    echo $mysqli->host_info . "\n";

    $mysqli = new mysqli("127.0.0.1", "*username*", "*password*", "*database*", 3306);
    if ($mysqli->connect_errno) 
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    

    echo $mysqli->host_info . "\n";
    ?>

上传PHP脚本:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<button type="submit" name="btn-upload">upload</button>
</form>

    <?php
    include_once 'uploadconnect.php';
    if(isset($_POST['btn-upload']))
        

     $file = rand(1000,100000)."-".$_FILES['file']['name'];
        $file_loc = $_FILES['file']['tmp_name'];
     $file_size = $_FILES['file']['size'];
     $file_type = $_FILES['file']['type'];
     $folder="uploads/";

     $new_size = $file_size/1024;  

     $new_file_name = strtolower($file);

     $final_file=str_replace(' ','-',$new_file_name);

     if(move_uploaded_file($file_loc,$folder.$final_file))
     
      $sql="INSERT INTO uploadedfiles(file,type,size) VALUES('$final_file','$file_type','$new_size')";
      mysql_query($sql);  #<--- LINE 65
      ?>
      <script>
      alert('successfully uploaded');
            window.location.href='upload.php?success';
            </script>
      <?php
     
     else
     
      ?>
      <script>
      alert('error while uploading file');
            window.location.href='upload.php?fail';
            </script>
      <?php
     
    
    ?>

错误似乎发生在“mysql_query($sql);”在上传文件的第 65 行。

【问题讨论】:

首先.. 从第一条错误消息看来,您将用户名和密码留空。其次,无论何时您收到该消息,都可能意味着您的赠款存在问题……如果昨天没有问题,则可能有人刷新了赠款,并且不久前进行了从未应用过的更改。这种特殊情况看起来好像您从未建立连接并使用同一个库进行查询。 【参考方案1】:

您已经使用mysqli 创建了一个数据库连接。 obsolete mysql 库不提供此功能。始终使用mysqli

【讨论】:

啊哈!明白了,那我把上传脚本重做mysqli,谢谢!

以上是关于mysql_query():用户''@'localhost'的访问被拒绝[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用用户名和密码进行 SQL 注入

mysql用户定义函数 - 如何在PHP中

警告:mysql_query() 期望参数 2 是资源 [重复]

“mysql_query() 或 die()” 是不是保持打开的 mysql 连接?

捕获 mysql_query 错误

PHP函数前面添加@的作用