2014-11-03 83 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注入。