使用OOP mysqli扩展类与数据库连接 [英] connection with database with OOP mysqli extending class

查看:62
本文介绍了使用OOP mysqli扩展类与数据库连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道必须在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆