PHP类直接执行select查询(MySQLI和PHP)
我在执行dinamicly select查询时遇到问题,“select”功能不起作用,您能帮我吗 以下是korisnici表: korisnik_id 科里斯尼克伊梅酒店 korisnik_lozinka 科里斯尼克·格鲁帕 korisnik_基准面 科里斯尼克盐 这里是DB.php类,在类的末尾是Select函数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
<?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
。不,我不会为您实现您的类。这是一个简单的编程。如果您能够编写问题中的类,那么编写这个新方法应该不会太难。