2011-05-18 2 views
0

Я работаю над небольшим приложением PHP + MySQL. Я столкнулся с проблемой, когда один из моих инструкций вставки, по-видимому, заставляет MySQL добавлять дополнительную несколько пустую строку после каждой вставки. Вот мои настройки:MySQL/PHP - добавление дополнительной строки в оператор INSERT

У меня есть функция, которая делает вставку:

function addFacCertification($facultyID,$month,$year,$completed,$certificatesent,$confirmationtodean,$comments) 
    { 
     //echo "$facultyID<br>$month<br>$year<br>$completed<br>$certificatesent<br>$confirmationtodean<br>$comments"; 
     $today = getdate(); 
     $month = $today["mon"]; 
     $date = $today["mday"]; 
     $year = $today["year"]; 
     $curdate = "$year" ."-". "$month" . "-" . "$date"; 
     $sql = mysql_query("INSERT INTO facultycertification (facultyID,cmonth, cyear, completed, certificatesent, confirmationtodean, comments, certifiedon) 
          VALUES ('$facultyID', '$month', '$year', '$completed', '$certificatesent', '$confirmationtodean','$comments', '$curdate')"); 
     return $sql; 
    } 

Вызов функции:

$sqlresults = addFacCertification($_POST["facultyID"], $_POST["month"], $_POST["year"], $_POST["completed"], $_POST["csent"], 
               $_POST["ctodean"], $_POST["comments"]); 

Проблема, каждый раз, когда это запустить - я получаю дополнительный ряд в мой стол: (см. второй ряд ниже) Изображение находится здесь:

Любые идеи, почему? Вот таблица структуры:

+5

PHP и MySQL не будут волшебно дублировать строки, поэтому что-то выполняет вашу функцию дважды. Либо ваш скрипт работает дважды, либо что-то удваивается при вызове функций. Вы можете поместить вызов 'print_r (debug_backtrace())' там, чтобы видеть, как выглядит стек выполнения каждый раз. –

+1

Я бы предложил использовать нотацию SET, а не нотацию VALUES. Кроме того, избегайте своих струн, ради милости! –

+0

@ Luke Почему вы предлагаете запись SET? –

ответ

2

Я бы предположил, что ваш код каким-то образом выполняется дважды. Я хотел бы предложить следующее (в указанном порядке) для отладки вопрос:

  • раскомментировать, что echo внутри функции и посмотреть, если он вторит дважды (то есть вы вызываете функцию дважды)
  • Если вы «повторно работает это с помощью веб-запроса tail регистрационного журнала веб-сервера, чтобы увидеть, если запрос делается дважды
  • включить общую регистрацию или включить профилирование на сервере MySQL, чтобы увидеть, что SQL запросы на самом деле запустить на сервере

У вас может быть что-то личное ke триггер MySQL на db делает это, если вы не настроили его самостоятельно, но я думаю, что это маловероятно.

Смежные вопросы