这是代码。出现的错误是“字段列表'中的未知列$ 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ê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 :(得分: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.php和http://php.net/manual/en/book.pdo.php
答案 1 :(得分: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_*
函数已弃用,将被删除。我建议您改用mysqli或PDO。
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']);
答案 2 :(得分:-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ête : </strong>" . mysql_error());
exit();
}