用户“root”的访问被拒绝; @localhost'(使用密码:YES) 和 mysqli_query() 期望参数 1 为 mysqli,bool 给定 [重复]

Posted

技术标签:

【中文标题】用户“root”的访问被拒绝; @localhost\'(使用密码:YES) 和 mysqli_query() 期望参数 1 为 mysqli,bool 给定 [重复]【英文标题】:Access denied for user 'root; @localhost'(using password:YES) and mysqli_query()expects parameter 1 to be mysqli,bool given [duplicate]用户“root”的访问被拒绝; @localhost'(使用密码:YES) 和 mysqli_query() 期望参数 1 为 mysqli,bool 给定 [重复] 【发布时间】:2020-06-16 14:46:14 【问题描述】:

我正在注册一个页面,我遇到了这个问题(如图所示)[问题截图]:https://i.stack.imgur.com/q3rA0.jpg。我是 php 和在线数据库的新手,所以我希望你能忍受我。我使用 xampp 作为我的服务器。

这是我的 android studio 代码:

public class MainActivity extends AppCompatActivity 

// Creating EditText.
EditText FirstName, LastName, Email ;

// Creating button;
Button InsertButton;

// Creating Volley RequestQueue.
RequestQueue requestQueue;

// Create string variable to hold the EditText Value.
String FirstNameHolder, LastNameHolder, EmailHolder ;

// Creating Progress dialog.
ProgressDialog progressDialog;

// Storing server url into String variable.
String HttpUrl = "http://192.168.254.254:81/connection/insert_record.php";

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Assigning ID's to EditText.
    FirstName = (EditText) findViewById(R.id.editTextFirstName);
    LastName = (EditText) findViewById(R.id.editTextLastName);
    Email = (EditText) findViewById(R.id.editTextEmail);

    // Assigning ID's to Button.
    InsertButton = (Button) findViewById(R.id.ButtonInsert);

    // Creating Volley newRequestQueue .
    requestQueue = Volley.newRequestQueue(MainActivity.this);

    progressDialog = new ProgressDialog(MainActivity.this);

    // Adding click listener to button.
    InsertButton.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 

            // Showing progress dialog at user registration time.
            progressDialog.setMessage("Please Wait, We are Inserting Your Data on Server");
            progressDialog.show();

            // Calling method to get value from EditText.
            GetValueFromEditText();

            // Creating string request with post method.
            StringRequest stringRequest = new StringRequest(Request.Method.POST, HttpUrl,
                    new Response.Listener<String>() 
                        @Override
                        public void onResponse(String ServerResponse) 

                            // Hiding the progress dialog after all task complete.
                            progressDialog.dismiss();

                            // Showing response message coming from server.
                            Toast.makeText(MainActivity.this, ServerResponse, Toast.LENGTH_LONG).show();
                        
                    ,
                    new Response.ErrorListener() 
                        @Override
                        public void onErrorResponse(VolleyError volleyError) 

                            // Hiding the progress dialog after all task complete.
                            progressDialog.dismiss();

                            // Showing error message if something goes wrong.
                            Toast.makeText(MainActivity.this, volleyError.toString(), Toast.LENGTH_LONG).show();
                        
                    ) 
                @Override
                protected Map<String, String> getParams() 

                    // Creating Map String Params.
                    Map<String, String> params = new HashMap<String, String>();

                    // Adding All values to Params.
                    params.put("first_name", FirstNameHolder);
                    params.put("last_name", LastNameHolder);
                    params.put("email", EmailHolder);


                    return params;
                

            ;

            // Creating RequestQueue.
            RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);

            // Adding the StringRequest object into requestQueue.
            requestQueue.add(stringRequest);

        
    );



// Creating method to get value from EditText.
public void GetValueFromEditText()

    FirstNameHolder = FirstName.getText().toString().trim();
    LastNameHolder = LastName.getText().toString().trim();
    EmailHolder = Email.getText().toString().trim();


这是我的 php 代码:

插入记录.php

<?php

include 'DatabaseConfig.php';

$con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName);

$f_name = $_POST['first_name'];
$l_name = $_POST['last_name'];
$email = $_POST['email'];

$Sql_Query = "insert into UserInfo (first_name,last_name,email) values 
('$f_name','$l_name','$email')";

if(mysqli_query($con,$Sql_Query))

echo 'Data Inserted Successfully';


else

echo 'Try Again';


mysqli_close($con);
?>

Dataconfig.php

<?php
$HostName = "localhost";
$HostUser = "root";
$HostPass = "root";
$DatabaseName = "users";

?>

【问题讨论】:

再次检查您的凭据是否正确。我认为xampp通常没有root密码。检查您是否可以连接到计算机上的数据库。 谢谢,你说得对,root 密码是正确的,我删除了它,然后它就可以工作了。但是知道它失败了,然后再试一次(就像回声中的内容一样)。这是否意味着它无法将我的数据存储在数据库中? 您的代码易受 SQL 注入攻击。您应该使用准备好的语句。您需要立即修复它。 @Dharman 我该如何解决? SQL 注入? 【参考方案1】:

我已经解决了,谢谢大家的回复。我的数据库的第一列中有一个具有自动增量的 UserID 主键,这就是为什么该数组不适合插入数据库的原因。我必须将 null 放在我的值之前,所以现在它可以工作了。

【讨论】:

以上是关于用户“root”的访问被拒绝; @localhost'(使用密码:YES) 和 mysqli_query() 期望参数 1 为 mysqli,bool 给定 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用户 'root'@'localhost' 的访问被拒绝

用户'root'@'localhost'的访问被拒绝)

用户'root'@'localhost'的MYSQL访问被拒绝

用户 'root'@'localhost' 的访问被拒绝

用户'root'@'localhost'的访问被拒绝(使用密码:YES)

#1045 - 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)