2014-11-03 167 views
1

我正在编写一个脚本,您可以在其中通过表单更改文章/项目的价格,但它不会更新我的新价格。我认为我的$更新可能有错误,因为我在更改受影响的行时(故意打错)没有收到任何错误消息。但我只是看不到它。我究竟做错了什么?提前致谢。php sql中的更新不会更新数据库

<?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

您的SQL查询中的错误不会触发PHP错误。你需要明确地寻找它。检查'mysqli_query()'的返回值。 – 2014-11-03 01:20:56

+0

'$ artikelrow [1]'文章ID?可能是这个名字,ID是'$ artikelrow [0]'?! – akmozo 2014-11-03 01:25:59

+0

我认为这不是一个SQL问题。 – akmozo 2014-11-03 01:27:41

回答

1

您非常喜欢SQL Injection。反正你的问题是表名:

$update = "UPDATE artikels SET Verkoopprijs ='". $nieuwprijs ."' WHERE Artikelnr ='". $artikel ."';"; 

应该

$update = "UPDATE artikel ..." 

没有最终的S,作为你的SELECT查询

$artikelquery = "SELECT * FROM artikel;"; 
1

我会提交此作为一个评论,如果我有足够的声誉。但这里是我的追踪SQL错误的建议。

的更新后补充一点:

if (mysqli_connect_errno()) echo '<div>DB Error: '. mysqli_error($connection) .'</div>'; 

另外,我建议你做一些输入验证或转义所以你不容易受到SQL注入。