gpt4 book ai didi

php - 如果已经存在则插入数据/更新

转载 作者:行者123 更新时间:2023-11-29 07:05:17 25 4
gpt4 key购买 nike

此代码有效。如果用户第一次按下“保存”按钮或更新数据,我不知道如何将数据插入数据库。

PHP 方面

<?php
require '../../core/includes/common.php';

$name=filter($_POST['name'], $db);
$title=filter($_POST['title'], $db);
$parentcheck=filter($_POST['parentcheck'],$db);
if(isset ($_POST['parent'])) $parent=filter($_POST['parent'],$db);
else $parent=$parentcheck;
$menu=filter($_POST['menu'], $db);
$content = $db->escape_string($_POST['content']);

$result=$db->query("INSERT INTO menu (parent, name, showinmenu) VALUES ('$parent', '$name', '$menu')") or die($db->error);
$new_id = $db->insert_id;
$result2=$db->query("INSERT INTO pages (id, title, content) VALUES ('$new_id', '$title', '$content')") or die($db->error);

if ($new_id>0){
echo "{";
echo '"msg": "success" ';
echo "}";
}else{
echo "{";
echo
'"err": "error"';
echo "}";
}

?>

更新

感谢@jmlsteeke 我找到了方法

将这段代码放在html部分

<?php
$result=$db->query("INSERT INTO menu (parent, name, showinmenu) VALUES ('555', 'new', '0')") or die($db->error);
$new_id = $db->insert_id;
$result2=$db->query("INSERT INTO pages (id, title, content) VALUES ('$new_id', 'new', 'new')") or die($db->error);

?>

并在表单中添加如下代码

<input type="hidden" name="id" value="<?=$new_id?>"/>

在服务器端脚本中使用

$result=$db->query("UPDATE pages AS p, menu AS m SET m.parent='$parent', m.name='$name', m.showinmenu='$menu', p.id='$id', p.title='$title', p.content='$content' WHERE m.id='$id' AND p.id=m.id") or die($db->error);

谢谢@jmlsteeke

最佳答案

一种常见的方法是在编辑页面时将 id 存储为隐藏字段。这样,当用户提交页面时,如果存在 id,则发出 UPDATE 命令,如果不存在,则知道这是一个新页面,并发出 INSERT 命令。

如果您需要我更彻底地告诉我。

编辑:更彻底

我将举一个简单、完整的例子来说明我的意思。

Form.php伪代码

//set default values for fields
//print form tag
if (isset($'id',$_GET)) {
//fetch data from database
//print hidden id field
//override default values for fields
}
//print rest of fields using default values (possibly overridden)

DoForm.php伪代码

//Sanitize user input
if (isset('id',$_POST)) {
//UPDATE database with user input
} else {
//INSERT new rows into table with user input
}

假设您有一个名为 Form.php 的 php 文件,它负责显示表单,还有另一个名为 DoForm.php 的 php 脚本,它负责处理表单。

如果用户在没有指定 ID 的情况下访问 Form.php (http://example.com/Form.php),那么它将显示以下表单:

<form method="post" action="DoForm.php">
<input type="text" name="name" value="" />
<input type="text" name="title" value="" />
... other stuff ...
</form>

用户会添加一些信息,点击提交按钮,DoForm会得到如下POST变量:

"name"  => "NewPageName"
"title" => "My First Webpag" [intetional typo, see later]
... other stuff ...

DoForm 将检查 $_POST['id'] 是否存在。因为它不会 DoForm 发出 INSERT 命令来添加新页面。

后来,用户意识到打字错误,并去修正它。用户单击“NewPageName”的“编辑页面”控件,它将是 http://example.com/Form.php?id=1

Form.php 看到设置了id,所以打印出来的表单如下:

<form method="post" action="DoForm.php">
<input type="hidden" name="id" value="1"
<input type="text" name="name" value="NewPageName" />
<input type="text" name="title" value="My First Webpag" />
... other stuff ...
</form>

用户修复了他们的类型,将 Webpag 更改为 Webpage,然后点击提交。 DoForm 获取以下 Post 变量

"id"    => 1
"name" => "NewPageName"
"title" => "My First Webpage"
... other stuff ...

DoForm 发现 id 已设置,因此使用 UPDATE 而不是 INSERT。

更清楚了吗?

关于php - 如果已经存在则插入数据/更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com