用户“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'的MYSQL访问被拒绝