0
有很多這方面的問題都在這裏回答,但我無法找到我的問題。php mysqli bind_param錯誤的參數數
使用作爲屬性存儲的mysqli的DB類。使用魔法調用方法觸發準備,綁定和執行:
public static function __callStatic($name, $arg)
{
echo '<pre>';
var_dump($arg);
echo '</pre>';
if($name == 'Prepare'){
self::$Stmt = self::$mysqli->prepare(implode(', ', $arg));
$return = self::$Stmt;
}elseif($name == 'Bind')
$return = self::$Stmt->bind_param(implode(', ', $arg));
elseif($name == 'Execute')
$return = self::$Stmt->execute();
else
$return = self::$mysqli->$name(implode(', ', $arg));
if(!self::GetErr())
return $return;
}
另外我有一個生成SQL語句的類。這是在準備語句中使用的輸出繼電器:
INSERT INTO account (UName, FName, LName, Email, Password, RecQuestion, RecAnswer, Admin) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
下面是代碼:
DB::Prepare(SQL::Table('account')->Insert([
'UName' => '?',
'FName' => '?',
'LName' => '?',
'Email' => '?',
'Password' => '?',
'RecQuestion' => '?',
'RecAnswer' => '?',
'Admin' => '?'
]));
DB::Bind('sssssssi', $userName, $fName, $lName, $email, $password, $recQ, $recA, $admin);
DB::Execute();
我所看到的有8種和8個值去用它...
也在這裏是var_dump($arg)
何時DB ::綁定被稱爲
array(9) {
[0]=>
string(8) "sssssssi"
[1]=>
string(4) "user"
[2]=>
string(5) "first"
[3]=>
string(4) "last"
[4]=>
string(15) "[email protected]"
[5]=>
string(64) "$2a$10$Tw4eOkUYA6SX8WP8XJfKZeFfOM9htVRJyP0d1iYlka0jNCV/qPGzazakT"
[6]=>
string(7) "recover"
[7]=>
string(64) "$2a$10$LrfK2EdkRi6pPdx1tUtPWe8p24T8ISdQHYhW0N06RjbvCrU4Flqiie4jU"
[8]=>
int(1)
}
'DB ::綁定( 'sssssssi',$用戶名,$ FNAME,LNAME $,$電子郵件,$密碼,$ RecQ解,$的recA,$管理員);'有9.你真的需要這個'sssssssi'嗎? – deex 2012-08-09 02:29:30
是的,這應該是怎麼回事?首先是8種類型,然後是8個值。 http://php.net/manual/en/mysqli-stmt.bind-param.php – Yamiko 2012-08-09 02:32:45
我上次檢查。 1)$ userName,2)$ fName,3)$ lName,4)$ email,5)$ password,6)$ recQ,7)$ recA,8)$ admin wheres the 9th value? – Yamiko 2012-08-09 02:44:46