-3

这是代码。出现的错误是“'字段列表'中的未知列 $idUsager”。但是那个专栏是真实存在的。

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    |                |
+------------+------------------+------+-----+---------+----------------+
4

3 回答 3

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

于 2013-04-07T17:50:32.850 回答
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']); 
于 2013-04-07T17:47:38.807 回答
-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();
  }
于 2013-04-07T17:49:34.627 回答