2013-04-07 61 views
-3

以下是代码。出现的错误是“未知的列$ idUsager在'字段列表'”。但是那个专栏确实存在。在变量中使用php和mysql时INSERT INTO

PHP代码:

$idUsager = $_POST['idUsager']; 
$secMoment = $_POST['secMoment']; 
$aire = $_POST['aire']; 
$longueur = $_POST['longueur']; 
$idMateriau = $_POST['idMateriau']; 

//I connect to db and everything works properly here. Also, all variables contain numeric values only. No strings. 

$query='INSERT INTO lesPoutres(idPoutre,idUsager,secMoment,aire,longueur,idMateriau)   
     VALUES(null,$idUsager,$secMoment,$aire,$longueur,$idMateriau)'; 

$result=mysql_query($query, $lien_bd); 
    if (!$result) { 
    print("<strong>Erreur lors du traitement de la requ&ecirc;te : </strong>" . mysql_error()); 

    exit(); 
    } 

这是MySQL表:

+------------+------------------+------+-----+---------+----------------+ 
| Field  | Type    | Null | Key | Default | Extra   | 
+------------+------------------+------+-----+---------+----------------+ 
| idPoutre | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| idUsager | int(10) unsigned | NO |  | NULL |    | 
| secMoment | float unsigned | NO |  | NULL |    | 
| aire  | float unsigned | NO |  | NULL |    | 
| longueur | float unsigned | NO |  | NULL |    | 
| idMateriau | int(5) unsigned | NO |  | NULL |    | 
+------------+------------------+------+-----+---------+----------------+ 
+0

真正的礼物 - 是的,在查询,但不数据库表。我强烈建议你先从简单的教程开始。并了解准备好的语句,它们允许您在查询中使用变量。 - http://php.net/pdo.prepared-statements – hakre 2013-04-07 18:06:29

回答

0

解决方案

你需要嵌入变量转换为字符串时使用"

更换

$query='INSERT INTO lesPoutres(idPoutre,idUsager,secMoment,aire,longueur,idMateriau)   
    VALUES(null,$idUsager,$secMoment,$aire,$longueur,$idMateriau)'; 

$query="INSERT INTO lesPoutres(idPoutre,idUsager,secMoment,aire,longueur,idMateriau)   
    VALUES(null,$idUsager,$secMoment,$aire,$longueur,$idMateriau)"; 

注意

mysql_*功能已过时,将被删除。我建议您改用mysqliPDO

SQL注入

你的脚本是容易受到SQL注入。您应该使用mysql_real_escape_string

$idUsager = mysql_real_escape_string($_POST['idUsager']); 
$secMoment = mysql_real_escape_string($_POST['secMoment']); 
$aire = mysql_real_escape_string($_POST['aire']); 
$longueur = mysql_real_escape_string($_POST['longueur']); 
$idMateriau = mysql_real_escape_string($_POST['idMateriau']); 
+0

现在我倒下了。我已经在这里很长一段时间了,现在知道我觉得这很愚蠢。非常感谢。 “互联网拥抱”。 – user2255102 2013-04-07 17:50:44

+0

@downvoter:介意解释倒票? – Shoe 2013-04-07 17:54:22

+0

我很感兴趣不知道为什么有人已经低估了每一个答案... – 2013-04-07 18:00:49

-1

尝试这个

$idUsager = $_POST['idUsager']; 
$secMoment = $_POST['secMoment']; 
$aire = $_POST['aire']; 
$longueur = $_POST['longueur']; 
$idMateriau = $_POST['idMateriau']; 

//I connect to db and everything works properly here. Also, all variables contain numeric values only. No strings. 

$query="INSERT INTO lesPoutres VALUES (null,'$idUsager','$secMoment','$aire','$longueur','$idMateriau')"; 

$result=mysql_query($query, $lien_bd); 
    if (!$result) { 
    print("<strong>Erreur lors du traitement de la requ&ecirc;te : </strong>" . mysql_error()); 

    exit(); 
    } 
1

你需要用引号括起来的输入数据:

替换此

$query='INSERT INTO lesPoutres(idPoutre,idUsager,secMoment,aire,longueur,idMateriau)   
     VALUES(null,$idUsager,$secMoment,$aire,$longueur,$idMateriau)'; 

与此

$query="INSERT INTO lesPoutres(idPoutre,idUsager,secMoment,aire,longueur,idMateriau)   
     VALUES(null,'$idUsager','$secMoment','$aire','$longueur','$idMateriau')"; 

也使用mysqli或PDO。 mysql_ *函数折旧。

插入防止SQL注入之前也难逃变量

$idUsager = mysql_real_escape_string($_POST['idUsager']); 
$secMoment = mysql_real_escape_string$_POST['secMoment']); 
$aire = mysql_real_escape_string$_POST['aire']); 
$longueur = mysql_real_escape_string$_POST['longueur']); 
$idMateriau = mysql_real_escape_string$_POST['idMateriau']); 
上的mysqli和PDO

更多信息可以在这里找到:http://php.net/manual/en/book.mysqli.phphttp://php.net/manual/en/book.pdo.php

+1

@downvoter为什么downvote为?这有什么问题。请解释 – Sabari 2013-04-07 17:57:14