데이터베이스에서 선택 ID, 선택 및 정의 쌍을 표시하는 양식이 있습니다. 양식은 동적입니다 ... 사용자에 따라 이러한 수의 쌍이있을 수 있습니다. 여기에 세 가지 페어링의 예입니다업데이트 쿼리가 정의되지 않은 오프셋 알림
선택 ID, 선택, 정의
선택 ID, 선택, 정의
선택 ID, 선택, 정의
페이지가 표시됩니다 잘하지만, 경우 사용자가 선택 또는 정의를 편집하고 싶다면 양식을 제출할 때 다음과 같은 오류 메시지가 나타납니다 (참고 : 41 번째 줄은 내 업데이트 쿼리 임) :
"알림 : 정의되지 않은 오프셋 : 3 (내 PHP 파일 링크) 온라인 41 "
나는이 쿼리가 내 세 배열의 정보를 읽지 않는다는 것을 알려주고 있다고 가정하지만, 올바르게 읽힐 수 있도록 내 쿼리에 무엇을 넣어야하는지 알지 못합니다. 당신의 도움을 주셔서 대단히 감사합니다.
if(isset($_POST['submit'])){
$selection_id = array();
$selection = array();
$definition = array();
foreach ($_POST as $key => $value){
// If array variable starts with "pd_selection_id_for_" save to $selection_id array, otherwise continue to the next array.
if(strpos($key, 'pd_selection_id_for_') !== false){
$selection_id[] = mysql_real_escape_string($value);
}else if(strpos($key, 'selection_for_') !== false){
$selection[] = mysql_real_escape_string($value);
}else if(strpos($key, 'definition_for_') !== false){
$definition[] = mysql_real_escape_string($value);
}
}
// Count one of the arrays to select the paired fields and update the database.
$total = count($definition);
for ($i=1; $i <= $total; $i++){
// Update query for the paired selections and definitions.
$query = mysql_query("UPDATE `pd_selections` SET `pd_selection` = '$selection[$i]', `pd_definition` = '$definition[$i]' WHERE `pd_selection_id` = '$selection_id[$i]' ") or die(mysql_error());
}
}
phpl arrays -'$ selection_id []'-는'0' 기반이므로 for ($ i = 1; $ i <= $ total; $ i ++)를 기반으로' {... $ selection_id [$ i]', 당신은 첫 번째'$ selection_id [0]'을 얻지 못할 것이고, 마지막 + 1 -'$ selection_id [3]'을 얻으 려 시도 할 것입니다. 어떤 경우에 3의 수처럼 보이는지 - 실제 배열 (0,1,2); 이 배열 (1,2,3)에 액세스하려고합니다. – Sean
for 루프를 ($ i = 0; $ i <$ total; $ i ++)로 변경했으며 완벽하게 작동했습니다. Sean과 GGio에게 감사의 말을 전합니다. –
는 PDO가 mysql 확장자를 잊어 버리는 것을 사용합니다. – Songo