php sql中的更新不会更新数据库

时间:2014-11-03 01:16:18

标签: php mysql

我正在编写一个脚本,您可以通过表单更改文章/项目的价格,但它不会更新我的新价格。我认为我的$ 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.';
    }
}
?>

2 个答案:

答案 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注入的影响。