gpt4 book ai didi

php - 使用动态 PHP 对象/数组来存储数据

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

希望我们在编码和实验方面度过了愉快的一周!

我正在开发一个类似 CMS 的项目,需要一些帮助才能使我的数据存储正常工作。目前的问题是,我不确定是否应该使用 PHP 对象、数组或两者,而且我不太确定如何在这样的实例中使用它们。 (我对 php/mysql 有点陌生,一些指导和示例会很棒!)

所以,我有一个名为“Project X”的数据库,其中有一个名为“users”的表。我创建了一个名为“UserData”的列,我打算在其中存储用户的页面设置和内容。

目前,用户在 CSV 格式的输入字段中键入他们想要的“页面”名称,该名称将保存到数据库中的 UserPages 字段中,然后对于每个页面,都会显示一个表单,如下所示:

$UserPages = null;
if ($stmt = $con->prepare("SELECT UserPages FROM users WHERE Username=?")) {
$stmt->bind_param("s", $Username);
$stmt->execute();
$result = $stmt->get_result();
$row = mysqli_fetch_assoc($result);
$UserPages = $row['UserPages'];
$Pages = explode(',', $UserPages);
while($data = mysqli_fetch_array($result)){
$UserPages .= $data['UserPages'];
$badchars = array("[", "]","'" );
$UserPages = str_replace($badchars , '', $UserPages);
}
}
foreach ($Pages as $Page) {
echo "<form action=" .$_SERVER['PHP_SELF']. " method='POST' id=" . $Page . ">";
$PageForm = "<h3>" . $Page . "</h3>
<hr/>

<h4>Title: </h4><input type='text' name='".$Page."[]' value='".$UserData['Title']."'><br/>
<h4>Subtitle: </h4><input type='text' name='".$Page."[]' value='".$UserData['Subtitle']."'><br/>
<input type='submit' value='Save' name='".$Page."' id='save'>";
print_r($PageForm);
echo "</form>";

}

?>

表格显示如下:

<form action="/phplogin/v2/edit.php" method="POST" id="Home">
<h3>Home</h3>
<hr>
<h4>Title: </h4><input type="text" name="Home[]" value="Title"><br>
<h4>Subtitle: </h4><input type="text" name="Home[]" value="Subtitle"><br>
<input type="submit" value="Save" name="Home" id="save">
</form>
现在,这确实有效(有点),但我需要正确(动态)获取和存储来自这些不同“页面”的数据,并将它们存储为对象中的数组,然后将其进行 JSON 编码并存储回UserData 列。

我目前使用的代码严重失败,仅将 UserData 字段中的数据替换为“保存”哈哈...

if(isset($_POST[$Page])) {
$data= $_POST[$Page];
$stmt = $con->prepare("UPDATE users SET UserData = ? WHERE Username = ?");
$stmt->bind_param('ss', $data, $Username);
$stmt->execute();
$stmt->close();
header('Location: '.$_SERVER['PHP_SELF']);
die;
}

所以我想我的主要问题是,如何将每个页面的数据获取到它自己的数组中,然后组合数组+ json编码和存储。

它的图片:

http://i.stack.imgur.com/o7BkX.png

最佳答案

在创建动态表单时或用户提交表单后是否需要存储数据?

您可以从 $_POST 变量中的提交中检索数据。然后你可以将它存储在一个对象中。

$object = new stdClass();
$object->page = $_POST['home'];

您还可以将数组转换为对象。

$object = (object) $array;

我认为您想要的是在表单输入中创建一个多维数组,如下所示。

foreach($pages as $page)
echo "<form action=" .$_SERVER['PHP_SELF']. " method='POST' id="pagesform">";

echo "<h4>Title: </h4><input type='text' name='"pages.[$page]."[]' value='".$UserData['Title']."'><br/>

然后迭代 post 变量并将其存储为对象。

$pages = $_POST['pages'];
$object = new stdClass();

foreach($pages as $key => $value) {
$object->pages[$key] = $value;
}

我建议您不要将 JSON 存储在数据库中,而是将数组的每个值存储在数据库中,并在需要时对其进行 json_encode。您可以在 foreach 循环中将对象的每个字段单独存储在数据库中。

关于php - 使用动态 PHP 对象/数组来存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37651630/

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