Php 使用数据库中的值和列名动态创建输入字段
我使用列中的信息创建输入,例如,如果一个字段被称为Php 使用数据库中的值和列名动态创建输入字段,php,mysql,arrays,Php,Mysql,Arrays,我使用列中的信息创建输入,例如,如果一个字段被称为about\u content,它将输出一个带有输入字段的about content标签。这对于插入很好,但是我想使用类似于UPDATE的代码,并且我想向用户显示在数据库中输入的字段的当前值。例如,如果about\u content=Hello World我希望输入值反映这一点。有没有一种方法可以动态地执行此操作 <?php require('dbc.php'); mysql_select_db($db); $resultInput =
about\u content
,它将输出一个带有输入字段的about content标签。这对于插入很好,但是我想使用类似于UPDATE
的代码,并且我想向用户显示在数据库中输入的字段的当前值。例如,如果about\u content=Hello World代码>我希望输入值反映这一点。有没有一种方法可以动态地执行此操作
<?php
require('dbc.php');
mysql_select_db($db);
$resultInput = mysql_query("SHOW COLUMNS FROM about WHERE Field NOT IN
('id', 'created', 'date_modified', 'last_modified', 'update', 'type', 'bodytext')
AND Field NOT REGEXP '_image'"); // selects only the columns I want
$result = mysql_query("SELECT * FROM about WHERE id=".$_GET['id']); // values I want to put into the values for <input>
while ($row = mysql_fetch_assoc ($result) && $column = mysql_num_rows ($resultInput)) {
foreach($row as $column => $value){
echo '<label>'.$column.'<input name="'.$column.'" type="input" value="'.$value.'"></label><br>';
}
}
?>
看到用箭头标记的点了吗?将值设置为在$result
中读取的相应数据库值,而不是字符串(1)
,而不是$resultInput
)
方法如下:使用mysql\u fetch\u assoc
进行选择
查询,而不是mysql\u fetch\u行
。将只有一行,因此在开始生成表单之前获取它。然后,您将拥有一个带有行值的命名数组,您可以按名称获取每个字段并将其放入表单中
如果您不了解如何做到这一点,请查看php文档中的mysql\u fetch\u assoc
然后逃出你的$\u GET['id']
,就像你在上一个问题中被告知的那样。你在乞求被惩罚 见
if(mysql\u num\u行($result)>0){
//循环创建输入
//使$resultInput对象成为数组。
$i=0;
while($row=mysql\u fetch\u assoc($result)){
$meta=mysql\u fetch\u字段($result,$i);
if(在数组中($meta->name,$resultInput)){
echo'.ucfirst(str_replace(''u','$meta->name))。
“
”;
}
$i++;
}
}
是否显示列
在sql查询中起作用?是的,当前每个部分都可以完美地单独工作,但问题是idk如何将输入与值组合在一起当前在哪里存储值?值存储在数据库中,当前localhostso编写一个查询以从数据库中获取值,就像您能够打印标签一样,您可以在输入框中打印值。谢谢,在我让主函数工作后,我会担心安全问题。。。(1)是为了让ppl能够理解我想做什么。。我仍然不知道如何将db值设置为$result,只有当我有一个带有$resultInput的while函数来获取列名时才知道警告:in_array()希望参数2是数组,在C:\xampp\htdocs\test.php第17行给出的资源我说过要将$resultInput对象设置为数组,即$resultInput=$resultInput->()其解析没有任何内容。。。它与$i有关,当我将值更改为例如2时,我得到第二个字段。这里还有我的数组$resultInput=array(“页面标题”、“子标题”、“内容简称”、“内容”)@亚历克斯:我还没有测试过。你现在可能已经理解了逻辑。我已经更新了答案。检查一下,仍然没有输出任何东西。逻辑是有道理的,但我找不到错误。你能给你的代码添加一些注释或解释吗?
if (mysql_num_rows($result) > 0) {
//loop creates inputs
//make $resultInput object to array.
$i=0;
while ($row = mysql_fetch_assoc($result)) {
$meta = mysql_fetch_field($result, $i);
if(in_array($meta->name, $resultInput )){
echo '<div class="wrapper"><label>' . ucfirst(str_replace('_', ' ',$meta->name)) .
'<br><input name="' . $meta->name .
'" type="text" class="input" value="$row[$meta->name]"><br></label></div>';
}
$i++;
}
}
<?php
include('db.php');
if (isset($_POST['btn'])) {
$dcolumn = $_POST['dyncolumns'];
$dvalue = $_POST['dynfields'];
$name = $_POST['name'];
$mobile = $_POST['mobile'];
$address = $_POST['address'];
$query = "INSERT into addtable(name,mobile,address)VALUES('" . $name . "','" . $mobile . "','" . $address . "')";
$result = mysql_query($query)or die(mysql_error());
$id = mysql_insert_id();
if ($dcolumn) {
foreach ($dcolumn as $key => $value) {
$result1 = "show COLUMNS from addtable like '.$value.'";
$exists = mysql_query($result1)or die(mysql_error());
$data = mysql_fetch_assoc($exists);
if ($data==TRUE) {
$query = "update addtable set $value = '" . $dvalue[$key] . "' where id=$id";
} else {
$query1 = "ALTER TABLE addtable ADD $value varchar(45)";
$result2 = mysql_query($query1)or die(mysql_error());
$query = "update addtable set $value = '" . $dvalue[$key] . "' where id=$id";
$result = mysql_query($query)or die(mysql_error());
}
}
}
}
?>
<script>
function myFunction() {
var table = document.getElementById("insert");
var row = table.insertRow(3);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<input type='text' name='dyncolumns[]'>";
cell2.innerHTML = "<input type='text' name='dynfields[]' >";
}
</script>
<html>
<body>
<form name="insert" method="post">
<table border="2" align="center" id="insert">
<tr>
<td>Name</td><td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Mobile</td><td><input type="text" name="mobile" maxlength="10"/></td>
</tr>
<tr>
<td>Address</td><td><input type="text" name="address" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="btn" value="submit"></td>
</tr>
</table>
<input type="button" onclick="myFunction()" name="add" value="Add">
<a href="logout.php">Logout</a>
</form>
</body>
</html>