gpt4 book ai didi

php - 如何使用 PHP 构建动态 MySQL INSERT 语句

转载 作者:行者123 更新时间:2023-11-29 01:30:04 24 4
gpt4 key购买 nike

您好

表单的这一部分显示了 mysql 表中的列名(计算机上安装的应用程序的名称),并创建了一个带有 YES/NO 选项或输入类型 =“文本” 框的表单以获得应用程序的附加权限..

如何使用 POST 和 mysql_query INSERT INTO 将其插入回 mysql 表?????
列的数量正在改变,因为有另一种形式可以添加有/没有特权的应用程序。

<tr bgcolor=#ddddff>';

//mysql_query for getting columns names
$result = mysql_query("SHOW COLUMNS FROM employees") or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
//exclude these columns bcs these are in other part of form
if($row[0] == 'id' || $row[0] == 'nameandsurname' || $row[0] == 'department'
|| $row[0] == 'phone' || $row[0] == 'computer' || $row[0] == 'data')
continue;
echo '<td bgcolor=#ddddff>'.$row[0].'<br />';

if (stripos($row[0], "privileges") !== false) {
echo '<td bgcolor=#ddddff><p><a class=hint href=#>
<input type="text" name="'.$row[0].'">
<span>Privileges like "occupation" or "like someone"</span></a></p></td></tr>';
}
else
{
echo '<td bgcolor=#ddddff align=center><select name="'.$row[0].'">
<option value = "No">No
<option value = "Yes">Yes
</td>
</tr>';
}
}

trim($_POST); // ????

$query = "INSERT INTO 'employees' VALUES (??)"; // ????

最佳答案

因为您没有插入所有列,所以您需要动态构建一个插入语句来指定要插入的列。

首先,创建一个包含您要使用的列的数组。使用它来生成您的表单并检索值

$exclude = array("id", "nameandsurname", "departument", "phone", "computer", "date");
$result = mysql_query("SHOW COLUMNS FROM employees") or die(mysql_error());
$columns = array();
while ($row = mysql_fetch_array($result)) {
if (!in_array($row[0], $exclude) {
$columns[] = $row[0];
}
}

$columns 数组渲染你的表单:

foreach ($columns as $column) {
echo '<tr><td bgcolor="#ddddff">'.$column.'<br />';
if (stripos($column, "privileges") !== false) {
echo '<p><a class="hint" href="#">
<input type="text" name="'.$column.'">
<span>Privileges like "occupation" or "like someone"</span></a>';
} else {
echo '<select name="'.$column.'">
<option value = "No">No
<option value = "Yes">Yes
</select>';
}
echo '</td></tr>';
}

然后,根据这些列的发布值动态构建您的 INSERT 字符串。一定要防止 SQL 注入(inject):

$keys = array();
$values = array();
foreach ($columns as $column) {
$value = trim($_POST[$column]);
$value = mysql_real_escape_string($value);
$keys[] = "`{$column}`";
$values[] = "'{$value}'";
}
$query = "INSERT INTO 'employees' (" . implode(",", $keys) . ")
VALUES (" . implode(",", $values) . ");";

注意:如果您从 INFORMATION_SCHEMA.COLUMNS 中进行选择,这样会更好,这样您就可以知道要插入的列的类型。这样,您就不必引用所有内容。

关于php - 如何使用 PHP 构建动态 MySQL INSERT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17968982/

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