여기에 답을 달았지만 내 문제는 무엇인지 알 수없는 질문이 많이 있습니다.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 문을 생성하는 클래스가 있습니다. ...
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 개 값이있는 내가 볼 수 있듯이 : 여기
INSERT INTO account (UName, FName, LName, Email, Password, RecQuestion, RecAnswer, Admin) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
코드입니다 :이 준비 문에서 사용되는 OUPUT입니다
도 여기에 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
그렇습니다. 어떻게해야할까요? 첫 번째는 8 가지 유형과 8 가지 값입니다. 지난 번 확인한 http://php.net/manual/en/mysqli-stmt.bind-param.php – Yamiko
1) $ userName, 2) $ fName, 3) $ lName, 4) $ email, 5) $ password, 6) $ recQ, 7) $ recA, 8) $ admin은 9 번째 값을 갖는가? – Yamiko