这是使用PHP插入mysql表的正确方法吗?

时间:2012-03-20 07:19:38

标签: php mysql

我想知道使用mysql_query在步骤3中插入表是否正确。另外,如何确保将其插入右侧?我猜我想使用WHERE语句。我这样做:INSERT .... WHERE .... VALUES

<?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
?>

5 个答案:

答案 0 :(得分:2)

假设您的表格设置正确,

Insert会自动创建一个带有新增量ID的新行。 INSERT语句中没有WHERE,仅在更新语句中。为了安全起见,你应该用mysql_real_escape_string()附上所有的POST。

答案 1 :(得分:0)

看来是对的。 用于选择/更新/删除/等等....而不是用于插入。

答案 2 :(得分: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.')
                    ");

答案 3 :(得分:0)

您可以使用mysql_insert_id(),

确保插入

例如:在mysql_query(插入查询)之后,你可以像这样使用。

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

答案 4 :(得分: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;

如果您有主键,但未将其设置为自动增量,则每次发出insert语句时都必须始终插入其值。 所以基本上这会失败,因为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}')");

除了你的查询应该工作正常:)

注意:您应该使用参数化查询。