0
이 코드에서 오류가 발생했습니다. MySQLi에서 매개 변수를 바인딩해야하는시기는 언제입니까?
//Prepare insert statement.
if($InsertEventQuery = $mysqli->prepare("INSERT into events(eventname, eventdesc, eventmonth, eventdate, eventyear, eventstart, eventend) VALUES ('$EventName','$EventDesc','$EventMonth','$EventDate','$EventYear','$EventStart','$EventEnd')"))
{
//Bind parameters of insert statement.
$InsertEventQuery->bind_param('ssiiiii', $EventName, $EventDesc, $EventMonth, $EventDate, $EventYear, $EventStart, $EventEnd);
이
오류입니다 :"경고 : mysqli_stmt :: bind_param() : 변수의 수에 준비된 성명에서 매개 변수의 수와 일치하지 않습니다 [...]"
"당신은이 경우에 매개 변수를 바인딩 할 필요가 없습니다 : 오류가 잘못 발견 될 것으로 보인다 때문에 나는 그것으로 보았다. 자리 표시자는 INSERT 문의 값이나 WHERE 절에 사용됩니다. 문안의 열 이름과 같은 식별자에는 자리 표시자를 사용할 수 없습니다. "
이렇게 혼란 스러우면 보안에 대한 궁금증이 생깁니다. 매개 변수를 바인딩 할 필요가있을 때 언제 필요합니까? 자리 표시자를 사용할 수 있습니다.
감사합니다!
음, 좋아. 이제 prepare() 문과 bind_param() 문에 변수 이름을 넣는 것이 불필요하지만 왜 물음표가 필요한지 이해하지 못합니다. –
실제로는 doc에서 가져온 것입니다. _이 매개 변수는 적절한 위치에 물음표 (?) 문자를 삽입하여 SQL 문에 하나 이상의 매개 변수 마커를 포함 할 수 있습니다 ._ [http://php.net/manual/en/mysqli .prepare.php] – Yoric
글쎄, 나는 그것을 이해하지 못했지만 지금은 효과가있다. 고마워요! –