我有問題了解我的繼承有什麼問題。我不能調用父母的大部分功能。下面是我卡住的功能。小php面向對象的問題
class MySQLi_DB extends mysqli {
private static $_instance = null;
private function __construct($db="test",$host="localhost", $user="root", $pass="")
{
parent::__construct($host, $user, $pass, $db);
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
static public function getDB()
{
if(self::$_instance == null)
{
self::$_instance = new MySQLi_DB();
}
return self::$_instance;
}
public function insert($table,$data)
{
$sql = $this->getQuery($table,$data);
print $sql;
}
public function getQuery($table, $inserts)
{
$lambda = function($value){
return $this->real_escape_string($value);
};
$values = array_map($lambda,$inserts);
$keys = array_keys($inserts);
return 'INSERT INTO `'.$table.'` (`'.implode('`,`', $keys).'`) VALUES (\''.implode('\',\'', $values).'\')';
}
我有調用real_escape_string()函數的問題。我一直在使用$這個 - > real_escape_string()嘗試,但我只是看到這個錯誤
Fatal error: Using $this when not in object context in D:\wamp\www\Driver\MySQLi_DB.php on line 49
確定可能是可能是lambda表達式的限制,但我已經通過聲明回調array_map嘗試過其他方式也不允許我調用real_escape_string。
我打電話給函數如下。
require_once 'MySQLi_DB.php';
$db = MySQLi_DB::getDB();
$insert_data = array("cmsId"=>444,"pageName"=>"New Insert");
$db->insert("cms",$insert_data);
請指出我在做錯的地方,最好的辦法是什麼。感謝
哪裏是real_escape_string()函數? – 2011-06-07 05:14:59
如果可能,你可以發佈MySQLi_DB.php的第49行嗎? – Babiker 2011-06-07 05:17:21
多數民衆贊成在lambda函數 – 2011-06-07 05:20:34