为什么 UPDATE 创建新记录?
Why is UPDATE creating a new record?
用于活动列表页面。将记录插入数据库后,我使用
捕获最后一个 ID
//Store ID[LAST]
$ID = mysqli_insert_id($db);
接下来页面显示的事件经过格式化以便于阅读。
然后用户可以使用 2 个按钮保留或批准要发布的项目:草稿、发布。我为每个使用提交按钮:
//Check ID value (use for testing)
echo "<p>ID = ".$ID."</p>\n";
echo "<form action='".$_SERVER['PHP_SELF']."' method='GET'>
<input type='submit' name='submitDraft' value='Draft' />
<input type='submit' name='submitPublish' value='Publish' />
</form>";
现在我根据选择的按钮使用条件更新记录。 (注意 connect.php
包含管理密码和连接语句。)
if (isset($_REQUEST["submitDraft"])) {
include('includes/connect.php');
$sql="UPDATE sessions SET postit='0' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
if (isset($_REQUEST["submitPublish"])) {
include('includes/connect.php');
$sql="UPDATE sessions SET postit='1' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
我的问题是 UPDATE 语句将新记录添加到 table 但应该更新相同的记录。请问我哪里错了
我认为您应该将最后一个插入 ID 保存在会话值中,并在用户单击“草稿”或“发布”时使用它,因为它显示数据插入和事件草稿或发布发生在不同的时间。
//Store ID[LAST]
$_SESSION['ID'] = mysqli_insert_id($db);
if(isset($_SESSION['ID'])){
$ID=$_SESSION['ID'];
//Check ID value (use for testing)
echo "<p>ID = ".$ID."</p>\n";
}
echo "<form action='".$_SERVER['PHP_SELF']."' method='GET'>
<input type='submit' name='submitDraft' value='Draft' />
<input type='submit' name='submitPublish' value='Publish' />
</form>";
if (isset($_REQUEST["submitDraft"])) {
include('includes/connect.php');
if(isset($_SESSION['ID'])){
$ID=$_SESSION['ID'];
}
$sql="UPDATE sessions SET postit='0' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
if (isset($_REQUEST["submitPublish"])) {
include('includes/connect.php');
if(isset($_SESSION['ID'])){
$ID=$_SESSION['ID'];
}
$sql="UPDATE sessions SET postit='1' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
我解决了这个问题。因为表单重新提交整个页面,insert 语句每次都是 运行 并添加新记录。该记录也得到更新,因此看起来像 UPDATE 是添加新记录。真正 INSERT 生成新记录并同时 UPDATE 更改 'postit' 字段。为了解决这个问题,我添加了条件 if $_REQUEST not equal submitDraft or submitPublish then INSERT
,否则它会跳过 INSERT。我也看到了来自@Jay Patel 和@SBA 的相同回答。谢谢你们
用于活动列表页面。将记录插入数据库后,我使用
捕获最后一个 ID//Store ID[LAST]
$ID = mysqli_insert_id($db);
接下来页面显示的事件经过格式化以便于阅读。 然后用户可以使用 2 个按钮保留或批准要发布的项目:草稿、发布。我为每个使用提交按钮:
//Check ID value (use for testing)
echo "<p>ID = ".$ID."</p>\n";
echo "<form action='".$_SERVER['PHP_SELF']."' method='GET'>
<input type='submit' name='submitDraft' value='Draft' />
<input type='submit' name='submitPublish' value='Publish' />
</form>";
现在我根据选择的按钮使用条件更新记录。 (注意 connect.php
包含管理密码和连接语句。)
if (isset($_REQUEST["submitDraft"])) {
include('includes/connect.php');
$sql="UPDATE sessions SET postit='0' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
if (isset($_REQUEST["submitPublish"])) {
include('includes/connect.php');
$sql="UPDATE sessions SET postit='1' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
我的问题是 UPDATE 语句将新记录添加到 table 但应该更新相同的记录。请问我哪里错了
我认为您应该将最后一个插入 ID 保存在会话值中,并在用户单击“草稿”或“发布”时使用它,因为它显示数据插入和事件草稿或发布发生在不同的时间。
//Store ID[LAST]
$_SESSION['ID'] = mysqli_insert_id($db);
if(isset($_SESSION['ID'])){
$ID=$_SESSION['ID'];
//Check ID value (use for testing)
echo "<p>ID = ".$ID."</p>\n";
}
echo "<form action='".$_SERVER['PHP_SELF']."' method='GET'>
<input type='submit' name='submitDraft' value='Draft' />
<input type='submit' name='submitPublish' value='Publish' />
</form>";
if (isset($_REQUEST["submitDraft"])) {
include('includes/connect.php');
if(isset($_SESSION['ID'])){
$ID=$_SESSION['ID'];
}
$sql="UPDATE sessions SET postit='0' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
if (isset($_REQUEST["submitPublish"])) {
include('includes/connect.php');
if(isset($_SESSION['ID'])){
$ID=$_SESSION['ID'];
}
$sql="UPDATE sessions SET postit='1' WHERE ID='$ID'";
if (mysqli_query($db, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
mysqli_close($db);
}
我解决了这个问题。因为表单重新提交整个页面,insert 语句每次都是 运行 并添加新记录。该记录也得到更新,因此看起来像 UPDATE 是添加新记录。真正 INSERT 生成新记录并同时 UPDATE 更改 'postit' 字段。为了解决这个问题,我添加了条件 if $_REQUEST not equal submitDraft or submitPublish then INSERT
,否则它会跳过 INSERT。我也看到了来自@Jay Patel 和@SBA 的相同回答。谢谢你们