2012-10-03 3 views
3

"변수의 수가 준비된 문에서 매개 변수의 수와 일치하지 않습니다."라는 오류를 이해할 수 없습니다.Mysqli 바인드 매개 변수 - 변수의 수가 매개 변수의 수와 일치하지 않습니다.

내 코드는 다음과 같습니다

$DB['con'] = new mysqli($$DB['host'],$DB['user'],$DB['pass'],$DB['base']); 

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values('?',?,'?','?','?',(SELECT CURDATE()))"); 
$stmt->bind_param('sisss',$idm,$mynumber,$nume,$email,$tel); 
$stmt->execute(); 
+0

당신은 $ DB [ '사기꾼'] 넣어 것을 잊었다 -을 bind_param 전에>()와 – bodi0

답변

8

문제는이 라인에 있습니다

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values('?',?,'?','?','?',(SELECT CURDATE()))"); 

귀하의 실수는 당신이 ? 자리 주위에 인용 부호를 가하고 있다는 점이다. 즉, 채우기가 필요한 자리 표시자가 아닌 리터럴 문자열 ?으로 해석됩니다. 따라서 실제로는 하나의 자리 표시 자만 있으므로 5를 보내면 잘못된 번호가 있음을 알 수 있습니다.

따옴표는 필요하지 않습니다. 'sisss'의 요점은 "이 값들은 문자열"이라고 말하는 것이므로 동일한 것을 말하기 위해 따옴표를 사용할 필요가 없습니다.

다음 작업을해야합니다 :

$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values(?,?,?,?,?,(SELECT CURDATE()))"); 
+2

왜이 받아 들여지지 않았다()을 실행? –

관련 문제