2016-08-21 49 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]')";