我正在编写一个脚本,您可以通过表单更改文章/项目的价格,但它不会更新我的新价格。我认为我的$ update中可能存在错误,因为当我更改受影响的行(故意错误)时,我不会收到任何错误消息。但我只是没有看到它。我究竟做错了什么?提前谢谢。
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "webauth";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$artikelquery = "SELECT * FROM artikel;";
$artikel = mysqli_query($connection, $artikelquery);
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Kies een artikel:</br>
<select name="artikel">
<?php
while($artikelrow = mysqli_fetch_row($artikel)) {
echo '<option value="'.$artikelrow[1].'">'."$artikelrow[1], $artikelrow[3] euro</option>";
}
?>
</select>
</br></br>
Vul de nieuwe prijs van het artikel in:</br>
<input type="number" name="prijs"></br></br>
<input type="submit" value="Verzend">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
if($_POST['prijs'] == "") {
echo 'bla';
}
else {
$nieuwprijs = $_POST['prijs'];
$artikel = $_POST['artikel'];
$update = "UPDATE artikels SET Verkoopprijs ='". $nieuwprijs ."' WHERE Artikelnr ='". $artikel ."';";
mysqli_query($connection, $update);
echo 'Artikel '. $artikel .' is aangepast naar '. $nieuwprijs .' euro.';
}
}
?>
答案 0 :(得分:1)
你很容易被SQL Injection攻击。无论如何,你的问题是表名:
$update = "UPDATE artikels SET Verkoopprijs ='". $nieuwprijs ."' WHERE Artikelnr ='". $artikel ."';";
应该是
$update = "UPDATE artikel ..."
没有最终结果,作为SELECT
查询
$artikelquery = "SELECT * FROM artikel;";
答案 1 :(得分:1)
如果我有足够的声誉,我会将此作为评论提交。但是我的建议是追踪SQL错误。
在UPDATE之后添加:
if (mysqli_connect_errno()) echo '<div>DB Error: '. mysqli_error($connection) .'</div>';
另外,我建议进行一些输入验证或转义,这样你就不会受到SQL注入的影响。