2012-03-20 6 views
1

Я хочу знать, правильно ли это вставить в таблицу на шаге 3 с помощью mysql_query. Кроме того, как я могу убедиться, что он вставлен в правую строку? Я предполагаю, что я должен использовать инструкцию WHERE. Должен ли я сделать это: INSERT .... WHERE .... ЗНАЧЕНИЯЭто правильный способ вставить в таблицу mysql с помощью PHP?

<?php 
if (isset($_POST)){ 
//1. Define form variables 
$language = $_POST['language']; 
$level = $_POST['level']; 
$language_learn = $_POST['language_learn']; 
$learn_level = $_POST['learn_level']; 
$preferred_contact = $_POST['preferred_contact']; 
$city = $_POST['city']; 
$age = $_POST['age']; 
$sex = $_POST['sex']; 
$description = $_POST['description']; 

//2. Check if form variables are valid 

//3. Insert into table 
$insert = mysql_query(" 
    INSERT INTO user (language, level, language learn, learn_level, preferred_contact, city, age, sex, description) 

    VALUES ('".$language."', '".$level."', '"$language_learn."', '".$learn_level."', '".$preferred_contact."', '".$city."', '".$age."', '".$sex."', ".$description."')"); 

//4. Reload page at home page 

}//end $_POST 
?> 

ответ

2

Вставка автоматически создает новую строку с новым прибавка ID предполагается, что ваш стол настроен правильно. В инструкции INSERT нет WHERE, только в инструкции обновления. И вы должны приложить все свои POST с помощью mysql_real_escape_string() для обеспечения безопасности.

+2

+1 для упоминания mysql_real_escape_string(). –

+0

Я бы предпочел использовать параметризованные запросы: http://stackoverflow.com/questions/732561/why-is-using-a-mysql-prepared-statement-more-secure-than-using-the-common-escape – Mike

+0

@Mike, так бы я, но на данный момент хотел сохранить его просто – yehuda

0

Кажется правильным. И где используется для выбора/обновления/удаления/etc ...., а не для вставки.

0

И вы можете использовать его непосредственно, не давая " и . для каждой переменной

$insert = mysql_query(" 
         INSERT INTO user 
         (language, level, language learn, learn_level, preferred_contact, city, age, sex, description) 
          VALUES 
         ('$language', '$level', '$language_learn', '$learn_level', '$preferred_contact', '$city', '$age', '$sex','$description.') 
        "); 
0

Вы можете обеспечить вставки с использованием mysql_insert_id(),

например: после mysql_query (вставки запроса) Вы можете использовать это.

if(mysql_insert_id >0) 
{ 
echo "Data inserted successfully"; 
} 
0

Прежде всего, вы должны убедиться, что у вас есть первичный ключ в таблице. Вероятно, у вас есть столбец вроде user_id в определении вашей таблицы, который является первичным ключом для этой таблицы.

Во-вторых, вы должны установить этот столбец как auto increment, поэтому всякий раз, когда вы добавляете новую запись в свою таблицу, значение для user_id будет добавляться автоматически.

CREATE TABLE 'user' 
(
'user_id' int(11) NOT NULL AUTO_INCREMENT, 
     ......... 
     other columns 
     ......... 
PRIMARY KEY ('user_id') 
) ENGINE=INNODB; 

Если у вас есть первичный ключ, но вы не установили его автоматическое приращение, то вы всегда должны вставить его значение каждый раз, когда вы выдаете оператор вставки. Так что в основном это не сработает, поскольку NULL не является допустимым значением для первичного ключа.

$insert = mysql_query(" 
INSERT INTO user (language, level, language learn, learn_level, preferred_contact, city, age, sex, description) 

VALUES ('{$language}', '{$level}', '{$language_learn}', '{$learn_level}', '{$preferred_contact}', '{$city}', '{$age}', '{$sex}', {$description}')"); 

Другой, чем ваш запрос должен работать нормально :)

Примечания: Вы должны использовать параметризованные запросы.