2016-08-21 17 views
-2

,所以我有這樣的代碼在我的主頁:在PHP更新我的SQL查詢我的所有條目不只是一個

<form action="update.php" method="post"> 

ID: <input type="text" name="ID" /><br> 
Name: <input type="text" name="Name" /><br> 
Details: <input type="text" name="Details" /><br> 
Seasons: <input type="text" name="Seasons" /><br> 
Price: <input type="text" name="Price" /><br> 
Image: <input type="text" name="Image" /><br> 

<input type="submit" value="Update" /><br><br> 

</form> 

,這是在我的update.php頁:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "series"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$sql = "UPDATE series SET ID=('$_POST[ID]'), Name=('$_POST[Name]'), Details=('$_POST[Details]'), Seasons=('$_POST[Seasons]'), Price=('$_POST[Price]'), Image=('$_POST[Image]')"; 


if (mysqli_query($conn, $sql)) { 
    header('Location: i.php'); 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 

mysqli_close($conn); 
?> 

我不能讓它更新數據庫中的單個條目,每次我輸入內容並嘗試更新時,它都會更新所有條目,而不僅僅是我想要的條目。有人可以幫我一個where條件,我不知道怎麼寫呢

+1

** Geat !** - 您正在使用'mysqli_ *',進一步提高您的安全性,請使用[預先準備的語句](http://php.net/manual/en/mysqli.prepare.php)。 – Script47

+1

您不指定要更新的記錄。您明確更新每條記錄。 –

+0

如果您只更新一行,請始終使用LIMIT。 – fernando

回答

0

form你首先獲取數據庫記錄與您要記錄的唯一ID更新。我已經使用了帶有靜態值的變量$id。你可以自己

<form action="update.php" method="post"> 
<?php 
$id = 1; //suppose your id of your database is 1. You can change it. 
$res = mysqli_query($conn, "SELECT * FROM series WHERE ID=$id");//You can use id of you record 
while($row = mysqli_fetch_array($res)){ 
?> 
<input type="hidden" name="ID" value="<?php echo $id; ?>" /><br><!--This is id of record which you want to update--> 
Name: <input type="text" name="Name" value="<?php echo $row['Name']; ?>" /><br> 
Details: <input type="text" name="Details" value="<?php echo $row['Details']; ?>" /><br> 
Seasons: <input type="text" name="Seasons" value="<?php echo $row['Seasons']; ?>" /><br> 
Price: <input type="text" name="Price" value="<?php echo $row['Price']; ?>" /><br> 
Image: <input type="text" name="Image" value="<?php echo $row['Image']; ?>" /><br> 

<input type="submit" value="Update" /><br><br> 
<?php 
} 
</form> 

改變它,在你sql查詢我都應該ID是您記錄的唯一ID和附加的條件與要更新WHERE條款。

$sql = "UPDATE series SET Name=('$_POST[Name]'), Details=('$_POST[Details]'), Seasons=('$_POST[Seasons]'), Price=('$_POST[Price]'), Image=('$_POST[Image]') WHERE ID='$_POST[ID]'"; 
0

您不必設置ID

用於更新查詢一般語法是:

UPDATE table SET ... WHERE id = $id

而且您的請求很容易出現SQL注入,因爲您的插入沒有轉義用戶數據。

最好使用預先準備的語句。

+1

*舊*?它怎麼老了? Swooping聲稱這需要事實證據。 – Script47

+1

^同意。 OP在哪裏定義了這個'$ id'? –

+0

@ Fred-ii-心靈讀者... – Script47

0

在你UPDATE查詢時,它給增加是很重要的一個WHERE子句。如果沒有WHERE子句,表中的所有記錄都將被更新。

假設$ id是ID,你需要添加WHERE ID = {{您-ID}}

$sql = "UPDATE series SET ID=('$_POST[ID]'), Name=('$_POST[Name]'), Details=('$_POST[Details]'), Seasons=('$_POST[Seasons]'), Price=('$_POST[Price]'), Image=('$_POST[Image]') WHERE id = '".$id."'"; 
+0

OP在哪裏定義了這個'$ id'? –

+0

從來沒有說OP做過。這只是一個示例,表明必須添加WHERE子句。上次我查了一下,我的回答提到了這個詞,叫做「假設」。 –

+0

我知道了,我不得不把它放在WHERE ID =('$ _ POST [ID]')「; 這是我只是想自己學習php,現在我不在乎代碼是多麼的好,我只是在學習 – StressedStudent

0

你沒有(通過主鍵(「ID」主要是做))使用WHERE子句,你必須指定要更新一個確切的記錄一下,

$sql="UPDATE series SET Name=('$_POST[Name]'), Details=('$_POST[Details]'),Seasons=('$_POST[Seasons]'), Price=('$_POST[Price]'), Image=('$_POST[Image]') WHERE id=('$_POST[ID]')"; 
相關問題