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

如何用PHP构建动态MySQL INSERT语句,php,mysql,post,show,implode,Php,Mysql,Post,Show,Implode,你好 表单的这一部分显示mysql表中的列名称(计算机上安装的应用程序的名称),并使用YES/NO选项或input type=“text”框创建一个表单,以获得应用程序的其他权限 如何使用POST和mysql_query insert-INTO将其插入到mysql表中 列的数量正在更改,因为有另一个表单用于添加具有/不具有权限的应用程序 <tr bgcolor=#ddddff>'; //mysql_query for getting columns names $result =

你好

表单的这一部分显示mysql表中的列名称(计算机上安装的应用程序的名称),并使用YES/NO选项或input type=“text”框创建一个表单,以获得应用程序的其他权限

如何使用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 (??)";  // ????
”;
//用于获取列名称的mysql\u查询
$result=mysql_query(“显示来自员工的列”)或die(mysql_error());
while($row=mysql\u fetch\u数组($result))
{
//排除这些列BC这些列在表单的其他部分
如果($row[0]='id'| |$row[0]=='name和姓氏'| |$row[0]=='department'
||$row[0]=='phone'| |$row[0]=='computer'| |$row[0]=='data')
继续;
回显“.$row[0]”。
; if(stripos($row[0],“privileges”)!==false){ 回声“

”; } 其他的 { 回声' 不 对 '; } } 修剪($_POST);/???? $query=“插入“员工”值(??);/??”????
因为没有插入所有列,所以需要动态生成一条insert语句,该语句将指定要插入的列

首先,创建要使用的列的数组。使用它可以生成表单和检索值

$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>';
}
注意:如果您从
INFORMATION\u SCHEMA.COLUMNS
中选择,这样可以更好地了解要插入的列的类型。这样,您就不必全部引用。


<html>
<body>
<form action="dynamicinsert.php" method="POST" >
user name:<br>
<input type="text" id="username" name="username">
<br><br>
first name:<br>
<input type="text" id="firstname" name="firstname">
<br><br>
password:<br>
<input type="password" id="password" name="password">
<br><br>
<input type="submit" name="submit" value="add" />
</form>
</body>
</html>

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "you_DB_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

function insertqueryfunction($dbfield,$table) {
   $count = 0;
   $fields = '';

   foreach($dbfield as $col => $val) {
      if ($count++ != 0) $fields .= ', ';
      $col = addslashes($col);
      $val = addslashes($val);
      $fields .= "`$col` = '$val'";
   }
   $query = "INSERT INTO $table SET $fields;";
   return $query;

} 

if(isset($_POST['submit']))
{

    // Report all errors
error_reporting(E_ALL);

    // Same as error_reporting(E_ALL);
     ini_set("error_reporting", E_ALL);
     $username_form = $_POST['username'];
     $firstname_form = $_POST['firstname'];
     $password_form = $_POST['password'];
     $you_table_name = 'you_table_name';

     $dbfield = array("username"=>$username_form, "firstname"=>$firstname_form,"password"=>$password_form);

     $querytest =  insertqueryfunction($dbfield,'you_table_name');

     if ($conn->query($querytest) === TRUE) {
    echo "New record created successfully";
    } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();

}  
?> 
用户名:


名字:


密码:



你在哪里使用html表单标签?如果没有这一点,提交表单帖子就无法创建,如果你想使用点击事件,那么就使用AJAX
mysql\u real\u escape\u string()
exists:)@Jack-是的,但它需要一个
mysql\u connect
ion,在php的更高版本中,
mysql
库被弃用。我显示注释掉的行的原因是,如果他在没有活动连接的情况下尝试我的代码,该行将失败。@Jack-Derp!接得好。:)嗨,山姆,欢迎来到SO,谢谢你注册回答这个问题。为了更好地回答问题,最好添加一些解释,说明代码为什么解决了OP的问题。
<html>
<body>
<form action="dynamicinsert.php" method="POST" >
user name:<br>
<input type="text" id="username" name="username">
<br><br>
first name:<br>
<input type="text" id="firstname" name="firstname">
<br><br>
password:<br>
<input type="password" id="password" name="password">
<br><br>
<input type="submit" name="submit" value="add" />
</form>
</body>
</html>

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "you_DB_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

function insertqueryfunction($dbfield,$table) {
   $count = 0;
   $fields = '';

   foreach($dbfield as $col => $val) {
      if ($count++ != 0) $fields .= ', ';
      $col = addslashes($col);
      $val = addslashes($val);
      $fields .= "`$col` = '$val'";
   }
   $query = "INSERT INTO $table SET $fields;";
   return $query;

} 

if(isset($_POST['submit']))
{

    // Report all errors
error_reporting(E_ALL);

    // Same as error_reporting(E_ALL);
     ini_set("error_reporting", E_ALL);
     $username_form = $_POST['username'];
     $firstname_form = $_POST['firstname'];
     $password_form = $_POST['password'];
     $you_table_name = 'you_table_name';

     $dbfield = array("username"=>$username_form, "firstname"=>$firstname_form,"password"=>$password_form);

     $querytest =  insertqueryfunction($dbfield,'you_table_name');

     if ($conn->query($querytest) === TRUE) {
    echo "New record created successfully";
    } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();

}  
?>