Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP类直接执行select查询(MySQLI和PHP)_Php_Oop_Mysqli - Fatal编程技术网

PHP类直接执行select查询(MySQLI和PHP)

PHP类直接执行select查询(MySQLI和PHP),php,oop,mysqli,Php,Oop,Mysqli,我在执行dinamicly select查询时遇到问题,“select”功能不起作用,您能帮我吗 以下是korisnici表: korisnik_id 科里斯尼克伊梅酒店 korisnik_lozinka 科里斯尼克·格鲁帕 korisnik_基准面 科里斯尼克盐 这里是DB.php类,在类的末尾是Select函数 <?php class DB{ private static $_instance = null; private $_stmt,$_query,$_error

我在执行dinamicly select查询时遇到问题,“select”功能不起作用,您能帮我吗

以下是korisnici表: korisnik_id 科里斯尼克伊梅酒店 korisnik_lozinka 科里斯尼克·格鲁帕 korisnik_基准面 科里斯尼克盐

这里是DB.php类,在类的末尾是Select函数

<?php
class DB{
    private static $_instance = null;
    private $_stmt,$_query,$_error=false,$_results,$count=0;

    public function __construct() {
        try{

            $this-> _stmt = new mysqli(Config::get('mysql/host'),Config::get('mysql/username'),Config::get('mysql/password'),Config::get('mysql/db'));
            if (mysqli_connect_errno()) {
                printf("Connect failed: %s\n", mysqli_connect_error());
                exit();
            }

        } catch (Exception $ex) {

        }

    }

    public static function getInstance(){

        if(!isset(self::$_instance)){
            self::$_instance = new DB();
        }
        return self::$_instance;
    }


    public function Select($query, $paramString = ''){
        $stmt = $this->_stmt->prepare($query);
        if (func_num_args() > 2){
            $parameters = func_get_args();
            array_shift($parameters); // remove the query from the list
            // Array needs to be bound by reference
            foreach ($parameters as $key=>&$value) {
                $parameters[$key] = &$value;
            }
            call_user_func_array(array($stmt, "bind_param"), $parameters);
        }
        $stmt->execute();
        $this->result = $stmt->get_result();
        $stmt->close();
        print_r($this->result);

    }
}
?>

下面是index.php文件:

<?php
require_once 'base/init.php';
DB::getInstance() -> Select('SELECT korisnik_id FROM korisnici WHERE korisnik_ime= ?', array('s','Alex'));
DB::Select()
要求绑定参数是单独的参数,而不是数组。所以你应该称之为:

DB::getInstance() -> Select('SELECT korisnik_id FROM korisnici WHERE korisnik_ime= ?', 's', 'Alex');

对于
('querystring',array('s','Alex'),/code>,单例已经够糟糕了,但是当它们有公共构造函数
func_num_args()>2
false
时,情况就更糟了。这只有两个参数,因此您不需要进行任何绑定。另外,我不明白你在
foreach
循环中做了什么;将双解引用值赋回到同一个键?看,这是我对这些PHP数据库包装器类所没有的了解。您已经执行了4行(prepare、bind、execute、getresult),并将其转换为一个无法工作的14行函数。这对没有收入的人来说是非常复杂的。我现在如何返回:$this->results=$this->results->fetch_object();在我的index.php文件和该文件内的echo korisnik_id像这样echo$this->results->korisnik_id?你应该向你的
DB
类添加一个这样做的方法。你能告诉我该方法应该是什么样子的吗?你知道为什么我不能绑定多个参数吗('SELECT korisnik_id FROM korisnici,其中korisnik_ime=?和korisnik_grupa=?','si','Alex,1');每个参数都应该是一个单独的参数:
'si',Alex',1
。不,我不会为您实现您的类。这是一个简单的编程。如果您能够编写问题中的类,那么编写这个新方法应该不会太难。