2013-07-27 3 views
2

Я использую для добавления данных в БД. Сначала я получаю значения из сообщения, а затем вставляю их в таблицу. Проблема состоит в том, что существует всего 7 значений, но добавлено только 5 значений и 2 из них не вставлены в таблицу. Вот мой кодMY sql query не работает полностью

if('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action'])) { 
     $degree_title = $_POST['degree_title']; 
     $degree_year = $_POST['degree_year']; 
     $uni_name = $_POST['uni_name']; 
     $degree_level = $_POST['degree_level']; 
     $major_sub = $_POST['major_sub']; 



     $run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`id`, `employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`) 
     VALUES (NULL, $eme_uid, $degree_title, $degree_year, $degree_level, $major_sub, $uni_name)"); 


    } 

Я эхо всех значения и все значения поступают так, почему все они не вставлены в таблицу любой идеи. Thank

+0

строки в значениях должны быть в '$ degree_title' – Rufinus

+2

GET MODERN: научитесь использовать MySQLi или PDO с подготовленными операторами и связывать переменные, тогда у вас не было бы этой проблемы - вы бы надеялись, что любая кодировка, связанная с образовательные учреждения будут использовать практику из этого столетия, а не в прошлом веке –

+0

@MarkBaker +1, проблема в том, что существует множество «плохих» желаний-быть howtos там .... – Rufinus

ответ

0

если id - автоинкремент, тогда вам не нужно его вставлять.

попробовать этот

 $run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`) 
    VALUES ($eme_uid, $degree_title, $degree_year, $degree_level, $major_sub, $uni_name)"); 
+0

Не поможет с строковыми полями, такими как $ degree_title –

+0

@echo_me, что он не работает, и не имеет никакого значения, что вы удаляете идентификатор или нет.Он работает для обоих, но главная проблема заключается в том, почему вставлено только 5 значений, –

+0

i guess '$ eme_uid' не вставил koz, и я не вижу, чтобы вы определяли его. –

1

попробовать:

$run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`id`, `employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`) 
    VALUES (NULL, '$eme_uid', '$degree_title', '$degree_year', '$degree_level', '$major_sub', '$uni_name')"); 

и я очень рекомендую:

1) не использовать mysql_ его устаревшее, использование mysqli_ *

2) sanitze ВСЕ значения в _POST для использования в операторах SQL.

+0

Я новичок в php, поэтому я действительно не понимаю, кто его использует. –

+0

найти «php sanitize user values» и внимательно посмотреть на форму ссылки Mark Baker http://phptherightway.com – Rufinus

+0

Я использую mysqli и sanitze, но у него все еще такая же проблема. Вставка только 5 значений не всех 7 значений. –

0

Мое предположение, что $degree_title и $uni_name не вставлены, потому что они являются varchars. В этом случае вам придется ставить кавычки вокруг этих значений.

Mysql является своего рода «прощающим» в том смысле, что он не выдает ошибку при использовании неправильных типов в sql-заявлении относительно фактического типа столбца.

Try:

$run = mysql_query("INSERT INTO `career_fourudb`.`tffeck_employee_edu` (`id`, `employee_id`, `degree`, `year`, `degree_level`, `major_degree`, `uni`) 
     VALUES (NULL, $eme_uid, '$degree_title', $degree_year, $degree_level, $major_sub, '$uni_name')"); 

Как упоминалось ранее идентификатор не должен быть включен (если идентификатор-столбец autoincremental) в вставной-заявлении, и вы должны действительно научиться MySQLi или PDO.

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