Проблема с массивом

Статус
В этой теме нельзя размещать новые ответы.

rasandrey

Участник
Регистрация
2 Апр 2009
Сообщения
214
Реакции
6
Этот кусок кода выдает ошибку "Column count doesn't match value count at row 1", помогите разобраться, плиз
PHP:
	$errors[] = array();
	$errors[0] = 'Не правильно введены такие поля';
	$price = $_POST['price'];
	
	//проверяем поле Цена
	if ($price > 0 ) {	} else $errors[] = 'Цена';
	//===
	
	//выводим ошибки заполнения
	if (count($errors) > 1) {
	foreach ($errors as $v){
		echo $v.'<br />';
	}
	echo '<a href="javascript:history.back(1)">Назад</a>';
	}
	//===
	
	else {
		mysql_query("INSERT INTO cars VALUES('','$price')") or die (mysql_error());
		echo 'Автомобиль добавлен';
	}
 
Этот кусок кода выдает ошибку "Column count doesn't match value count at row 1"
Ошибка указывает на то, что вы пытаетесь дабавить в таблицу cars значения двух полей, а их больше или меньше. Либо указываете значения всех полей в INSERT'е, либо явно задавайте поля для инчерта. Пример:
Код:
INSERT INTO cars (name,price) VALUES('','$price')
 
скрипт вообще кривой какой-то.

PHP:
if ($price > 0 ) {    } else $errors[] = 'Цена';
читать как
PHP:
if ($price <= 0 ) $errors[] = 'Цена';


PHP:
if (count($errors) > 1)

будет срабатывать всегда, ибо:
PHP:
$errors[0] = 'Не правильно введены такие поля';

поэтому никаких вставок в таблицу нет, ибо условие для вставки НЕ ВЫПОЛНЯЕТСЯ НИКОГДА!

Добавлено через 53 секунды
PHP:
if (count($errors) > 1)
меняем на
PHP:
if (count($errors) > 2)

и наслаждаемся
 
...
PHP:
if (count($errors) > 1)
будет срабатывать всегда, ибо:
PHP:
$errors[0] = 'Не правильно введены такие поля';
поэтому никаких вставок в таблицу нет, ибо условие для вставки НЕ ВЫПОЛНЯЕТСЯ НИКОГДА!

в данном случае - count($errors)=1. а это никак не >1... если, конечно кроме errors[0] - нет ничего более. Если же в if поставить >2 - то чтоб сработало, в errors должно быть вообще 3 записи. что помоему есть просто дофига в этом примере, и, насколько видно по коду, errors может быть либо =1, либо =2. :)
 
в данном случае - count($errors)=1. а это никак не >1... если, конечно кроме errors[0] - нет ничего более. Если же в if поставить >2 - то чтоб сработало, в errors должно быть вообще 3 записи. что помоему есть просто дофига в этом примере, и, насколько видно по коду, errors может быть либо =1, либо =2. :)


ага, точно, не углядел. но все равно все так как будто либо условие не срабатывает, либо в запросе на вставку количество полей отличается от базы
 
Условие - нормально срабатывает, даже в таком варианте. :)
"Column count doesn't match value count at row 1" - выплевывает die (mysql_error()), и это означает лишь то, что количество столбцов не совпадает с количеством значений, и мускль тупо не знает что и в какой столбец писать. Тоесть, в запросе необходимо явно указать, в какие столбцы какие значения записывать. Тогда и не будет этой ошибки.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху