为什么INSERT INTO不能在几乎相同的代码中起作用?

时间:2019-11-10 12:53:19

标签: php html mysql sql forms

因此,有效的代码具有以下html形式(showBack.php):

<form action="add.php" method="POST">
Name: <input type="text" name="addName"><br>
Price: <input type="text" name="addPrice"><br>
<input type="submit" value="Add">

然后将输入插入到另一个文件(add.php)中的数据库中:

$nam=$_POST['addName'];
$prcc=$_POST['addPrice'];
$sql= 'INSERT INTO korzina (Name, Price, Num)
VALUES ("'.$nam.'","'.$prcc.'", "0")';
mysqli_query($conn, $sql);

现在,我要做的只是添加更多字段并更改添加该信息的表 (edit.php):

<form action="addd.php" method="POST">
Аты: <br><input type="text" name="addName"><br>
Сипаты: <br><input type="text" name="addDes"><br>
Бағасы: <br><input type="text" name="addPrc"><br>
Өндіруші бағасы: <br><input type="text" name="addRrp"><br>
Саны: <br><input type="text" name="addQ"><br>
Суреті: <br><input type="text" name="addImg"><br>
<input type="hidden" name="addDat" value="<?=$date ?>">
<input type="submit" value="Қосу">

这只是意味着要在另一个文件(addd.php)中添加更多的值:

$nam=$_POST['addName'];
$des=$_POST['addDes'];
$prc=$_POST['addPrc'];
$rrp=$_POST['addRrp'];
$quant=$_POST['addQ'];
$img=$_POST['addImg'];
$dat=$_POST['addDat'];
$sql= 'INSERT INTO products (name, desc, price, rrp, quantity, img, date_added)
VALUES ("'.$nam.'","'.$des.'", "'.$prc.'", "'.$rrp.'", "'.$quant.'", "'.$img.'", "'.$dat.'")';
mysqli_query($conn, $sql);

但是现在它不起作用了。这是完全相同的代码,只是扩展了一点,但它不起作用,这让我发疯。

编辑:没有任何错误,代码只是行不通。较短的代码有效,即,将输入添加到表中没问题,但是现在我添加了更多变量,但是没有。而且,这只是一个愚蠢的任务,我不在乎sql注入或其他什么,而且我确定我的老师甚至都不知道它是什么

1 个答案:

答案 0 :(得分:0)

这可能是因为desc是保留关键字。 尝试将其包围在中间: 像这样:

$sql= 'INSERT INTO products (`name`, `desc`, `price`, `rrp`, `quantity, `img`, `date_added`)
VALUES ("'.$nam.'","'.$des.'", "'.$prc.'", "'.$rrp.'", "'.$quant.'", "'.$img.'", "'.$dat.'")';

P.S:通常,在Database namesTable NamesColumns的前后加上勾号: 这样可以避免一些错误 附言:使用这种查询是危险的(SQL注入风险)。尝试在PDO中准备语句。 像这样:

$stmt = $pdo->prepare("INSERT INTO `my_table` (`col_1`,`col_2`,`col_2`) VALUES (?,?,?)");
$stmt->execute([ $val1, $val2, $val3 ]);