Member 10578733 Ответов: 3

Как мне устранить эту ошибку?


Я получаю ошибку, которая говорит: "
Notice: Undefined index: text1 
"
<div class="formRow">
                            <div class="grid2"><label><?php echo $lang['Timezone']; ?>:</label></div>
                            <div class="grid10">
                               <?php
				$query_timezone1=mysql_query("SELECT * FROM tbl_timezone WHERE id!='$db_timezone_id' ORDER BY timezone ASC");
				$option_timezone1="";
				while($row=mysql_fetch_array($query_timezone1)) {
				$option_timezone1 .= "<option value='$row[id]'";
				$option_timezone1 .= ">". $row['text1'] ." ". $row['timezone'] ."</option>";  }
				?>    
				<select name="timezone" id="timezone"  data-placeholder="Choose" class="select" tabindex="2" style="width:100%;">
                                <?php if($db_timezone_id!=0){echo "<option value='$db_timezone_id'>$db_timezone_code1 $db_timezone_timezone</option>"; }else{echo"<option value=''></option> ";}?>
				<?php echo $option_timezone1; ?>
				</select>
                            </div>             
                    </div>


Что я уже пробовал:

я пытался определить источник ошибки, но все напрасно

3 Ответов

Рейтинг:
22

Mehdi Gholam

Ваши данные, возвращенные из инструкции select, не имеют столбца 'text1' - > $row['text1']

Запустите свой запрос и посмотрите, какие фактические имена столбцов у вас есть.


Member 10578733

спасибо за ответ,Нужно ли мне создавать строку в моей базе данных?

Mehdi Gholam

Если вам нужен столбец "text1", то да, создайте его.

Рейтинг:
1

Patrice T

$query_timezone1=mysql_query("SELECT * FROM tbl_timezone WHERE id!='$db_timezone_id' ORDER BY timezone ASC");


Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
PHP: SQL Injection-руководство пользователя[^]

SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
Шпаргалка по предотвращению инъекций SQL-OWASP[^]


Member 10578733

спасибо за совет по SQL инъекции и постараюсь его решить

Рейтинг:
0

Mohibur Rashid

Прежде всего, удалите*, вместо этого добавьте имя столбца, чтобы лучше практиковаться:
пример:

-- the no no
SELECT * FROM tbl_;

-- suggested
SELECT COL_1, COL_2,...,COL_3 FROM tbl_;


mysql_fetch_array()[^] возвращает как базовую индексацию 0, так и индексацию имени столбца. С другой стороны mysql_fetch_assoc()[^]

Я предпочитаю mysql_fetch_assoc, (на одну индексацию меньше)

Для понимания того, почему вы не получаете, почему вы пропускаете колонку,
использовать
print_r($row);



дальнейшее предложение, прекратите использовать функции mysql_*, попробуйте mysqli_*; еще лучше использовать класс mysqli[^]

попробуйте использовать mysqli:: подготовка[^]. SQL-инъекция-это реальная проблема.

Взгляните на SQL инъекцию


Member 10578733

Спасибо за совет и я внесу изменения в свой код