如何在MySQL表中存储数组值?

Rav*_*Rav 1 php mysql arrays html-table insert

表单提交的值存储在$ array中.

$array= array("123","James","New York");
Run Code Online (Sandbox Code Playgroud)

MySQL表(客户)

ID-----NAME-----CITY
Run Code Online (Sandbox Code Playgroud)

我是PHP的新手.我想数组数据插入MySQL表中的相关列.

mysql_query("INSERT INTO customer (ID,NAME,CITY) 
                    VALUES ('123','James','New York')" );
Run Code Online (Sandbox Code Playgroud)

但是可以使用数组元素的数量可以在每个表单提交中更改.

我怎么能用PHP做到这一点?

注意:

在选择的表格页面中,用户从下拉菜单中选择表格,然后加载自定义表格.因此列名取决于用户选择的表.我可以在"$ array"中获取表单中提交的值.但问题是每次都会改变数值.

mysql_query(INSERT INTO客户VALUES($ array)); //无法使用此格式

选择表格代码

<?php
include("functions.inc");
connectDatabase();
$queryseltable= "SHOW TABLES" or die("error query");

$result=mysql_query($queryseltable);


?>

<link href="style.css" rel="stylesheet" type="text/css" />

<form action="process.php" method="post">

<div id="wrapper">

    <table>
      <tr>
        <td id="right">Select Table:</td>
        <td id="input">

        <select name="table">

        <?php

        while($row=mysql_fetch_array($result)){


            extract($row);
            echo "<option>".$Tables_in_database ."</option>";        
        }
        ?>

        </select>

        </td>
      </tr>

      <tr>
        <td></td>
        <td><input type="submit" value="Select" /></td>
      </tr>

    </table>
</div>

</form>
<?php
?>
Run Code Online (Sandbox Code Playgroud)

Process.php代码

<link href="style.css" rel="stylesheet" type="text/css" />

<form action="insert.php" method="post">

<?php

include("functions.inc");

connectDatabase();

$table= $_POST['table'];

$_SESSION['table'] = $table;

$query= "SELECT * FROM $table";

$result= mysql_query($query) or die("query failed");

$count=mysql_num_fields($result);

$fieldname = mysql_field_name($result, 0);

?>

<div id="wrapper">

    <table>

        <?php

        for($x=0; $x<$count;$x++){

                $fieldname = mysql_field_name($result, $x);
        echo "  
                <tr>
                     <td id=\"right\">$fieldname</td>
                     <td id=\"input\"><input type=\"text\" name=\"test[]\" /></td>
                </tr>
      ";


      }

      ?>
      <tr>
        <td></td>
        <td><input type="submit" value="Insert" /></td>
      </tr>

    </table>
</div>

</form>
Run Code Online (Sandbox Code Playgroud)

dev*_*Rew 9

使用PDO预处理语句,如下所示:

$pdo = new PDO($dns); // where $dns is your connection string
$q = $pdo->prepare('INSERT INTO customer (ID, NAME, CITY) VALUES (?, ?, ?)');
$q->execute(array("123","James","New York"));
Run Code Online (Sandbox Code Playgroud)

阅读这里关于PDO

更新:

如果你真的需要这个,你可以通过POST传递数组,比如

<form>
    <input type="hidden" name="table[column1]" value="value1" />
    <input type="hidden" name="table[column2]" value="value2" />
    ...
    <input type="hidden" name="table[columnN]" value="valueN" />
</form>
Run Code Online (Sandbox Code Playgroud)

使用命名列,因为当您知道列是什么时,您的表单会生成.

在PHP中你会得到:

$array = $_POST['table'];
// Now, $array === array('column1' => 'value1', 'column2' => 'value2', ..., 'columnN' => 'valueN');
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

$pdo = new PDO($dns); // where $dns is your connection string
$q = $pdo->prepare(sprintf(
    'INSERT INTO customer (%s) VALUES (%s)',
    implode(', ', array_keys($array)), // column names separated by ', '
    implode(', ', array_fill(0, count($array), '?')) // ? marks for placing values
));
$q->execute($array);
Run Code Online (Sandbox Code Playgroud)

希望能帮到你一些方法.但是应该知道这种方式是不确定的,请不要这样,直到你真的需要它