使用OOP mysqli扩展类与数据库连接 [英] connection with database with OOP mysqli extending class
问题描述
我知道必须在mysqli上对mysql bt new的一部分进行编码.我无法对数据库执行这些插入查询.我进行了很多搜索,但找不到简单的建议,或者可能是我听不懂.
I know must coding part of mysql bt new at mysqli. I am not able to execute these insert query to the database. I have searched a lot but couldn't find simple suggestion, or may be i didn't understand.
未定义变量:第32行上C:\ wamp \ www \ New folder \ php \ msqliconnect.php中的mysqli
Undefined variable: mysqli in C:\wamp\www\New folder\php\msqliconnect.php on line 32
致命错误:在第32行的C:\ wamp \ www \ New folder \ php \ msqliconnect.php中的非对象上调用成员函数mysqli_query()
Fatal error: Call to a member function mysqli_query() on a non-object in C:\wamp\www\New folder\php\msqliconnect.php on line 32
感谢您的帮助.
<?php
class connection
{
public $mysqli;
function connect()
{
$hostname = "localhost";
$username = "root";
$password = "";
$database = "demodatabase";
$mysqli = new mysqli($hostname, $username, $password, $database);
/* check connection */
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
return true;
}
}
class Index extends connection
{
function __construct()
{
parent::connect();
}
function insertdata($a, $b)
{
// echo $a. ' ' .$b;
// MySqli Insert Query
$status = 0;
$insert_row = $mysqli->mysqli_query("INSERT INTO tb_user (id, user, password, status) VALUES('','" . $a . "', '" . $b . "', '')");
if ($insert_row)
{
print 'saved';
}
else
{
die('Error : (' . $mysqli->errno . ') ' . $mysqli->error);
}
}
}
?>
推荐答案
在您的connect()
和insertdata()
方法中,您都是使用局部变量 $mysqli
,而不是实例变量 public $mysqli;
.您应该在实例方法中使用$this->mysqli
而不是$mysqli
.因此,您的connect()
和insertdata()
方法将如下所示:
In both of your connect()
and insertdata()
methods, you're using local variable $mysqli
, not the instance variable public $mysqli;
. You should use $this->mysqli
instead of $mysqli
in your instance methods. So your connect()
and insertdata()
methods would be like this:
function connect(){
$hostname = "localhost";
$username = "root";
$password = "";
$database = "demodatabase";
$this->mysqli = new mysqli($hostname, $username, $password, $database);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
return true;
}
和
function insertdata($a, $b){
$insert_row = $this->mysqli->query("INSERT INTO tb_user (id, user, password, status) VALUES('','".$a."', '".$b."', '')");
if($insert_row){
print 'saved';
}else{
die('Error : ('. $this->mysqli->errno .') '. $this->mysqli->error);
}
}
旁注::了解> 准备好的声明 ,因为现在您的查询容易受到SQL注入攻击.另请参见 如何防止PHP中的SQL注入 > .
Sidenote: Learn about prepared statement because right now your query is susceptible to SQL injection attack. Also see how you can prevent SQL injection in PHP.
这篇关于使用OOP mysqli扩展类与数据库连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!