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

Тема в разделе "PHP", создана пользователем rasandrey, 25 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rasandrey

    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 ) {    } 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 
    'Автомобиль добавлен';
        }
     
  2. Inoteol

    Inoteol Создатель

    Регистр.:
    17 июл 2009
    Сообщения:
    10
    Симпатии:
    1
    Ошибка указывает на то, что вы пытаетесь дабавить в таблицу cars значения двух полей, а их больше или меньше. Либо указываете значения всех полей в INSERT'е, либо явно задавайте поля для инчерта. Пример:
    Код:
    INSERT INTO cars (name,price) VALUES('','$price')
     
    rasandrey нравится это.
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    скрипт вообще кривой какой-то.

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

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

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

    Virtual Создатель

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

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102

    ага, точно, не углядел. но все равно все так как будто либо условие не срабатывает, либо в запросе на вставку количество полей отличается от базы
     
  6. Virtual

    Virtual Создатель

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