【问题标题】:add values into selection table from multiple table从多个表中将值添加到选择表中
【发布时间】:2017-10-13 02:09:46
【问题描述】:

我到处搜索,仍然找不到答案。有人可以帮忙吗?

我有一个 PHP 表单,它由一个文本框(包含将进入列 name_id 的数据)和一个复选框组成,该复选框可以选择转到 5 个不同的 MySQL 表:

'table A'
'table B'
'table C'
'table D'
'table E'

人们可以选择他们想要的表,name_id 将转到所选表。

我该怎么做?

【问题讨论】:

  • 为什么是5张而不是1张?

标签: php mysql


【解决方案1】:

我的答案与@RandD-SexyBoy- 不同。我的 sql 查询与@RandD-SexyBoy 不同——他使用了$sql = "INSERT INTO $tables[$i](nameID_column); 而没有使用VALUES (:nameID_column) 是用过$sql->prepare("INSERT INTO ".$v." (name_id) VALUES (?)"

这里是用户响应的 3 种情况

案例优先:用户可以选择单个表

第二种情况:用户可以选择多个表。这里我们必须使用foreach()循环和动态sql查询。

案例三:在这种情况下用户不能选择任何表,我们必须给用户一个消息table not selected

html 表单:

`

<html>
    <head>

    </head>
    <body>
        <form action="" method="post">
            <input type="text" name="name_id" required>

            <p>select your table to add data</p>
            <input type="checkbox" name="tables[]" value="tblA">Table A<br>
            <input type="checkbox" name="tables[]" value="tblB">Table B<br>
            <input type="checkbox" name="tables[]" value="tblC">Table C<br>
            <input type="checkbox" name="tables[]" value="tblD">Table D<br>
            <input type="checkbox" name="tables[]" value="tblE">Table E<br>

            <input type="submit" name="submit">
        </form>
    </body>
</html>

`

php 文件:

 <?php
    $con = new mysqli('localhost','root','admin','demo');

    if(!$con){
        die("Connection ".$con->connect_error);
    }

    if(isset($_POST['submit'])){
        $name_id = $_POST['name_id'];

        $tables = $_POST['tables']; 

        if(!empty($tables)){
            foreach($tables as $key=>$v){
                $sql = $con->stmt_init();
                if($sql->prepare("INSERT INTO ".$v." (name_id) VALUES (?)")){
                    $sql->bind_param($name_id);
                    $sql->execute();

                    echo "DATA INSERTED";
                }
                else
                {
                    echo "Error".$con->error;
                }
            }
        }
        else
        {
            echo "You have not selected tables";
        }
    }
?>

【讨论】:

  • 我收到此消息警告:mysqli_stmt::bind_param() 的参数计数错误......在第 350 行数据插入
  • 可以将这个$sql-&gt;bind_param($name_id); 更改为这个$sql-&gt;bind_param('i',$name_id);。如果出现错误,您仍然会在评论框中收到代码。如果您想了解更多关于绑定参数的信息,请点击this link
【解决方案2】:

所以一种天真的方法可能是,当用户提交表单时,在您的 php 端,您检查哪些复选框被勾选,您的条件可能是这样的

if(checkbox_for_table_A) {// insert query}

if(checkbox_for_table_B) {// insert query}

if(checkbox_for_table_C) {// insert query}

if(checkbox_for_table_D) {// insert query}

if(checkbox_for_table_E) {// insert query}

这样,如果选中一个复选框,它将保存到该表中,如果选择了多个表,它将进入该表。

希望这会有所帮助!在评论部分提出任何疑问。

【讨论】:

    【解决方案3】:

    改编自来源:post checkbox value 和教程http://www.mustbebuilt.co.uk/php/insert-update-and-delete-with-pdo/,您可以使用这种方法:

    HTML 表单:

    <form action="checkbox-form.php" method="post">
    
        <input type="text" name="name_id" /><br />
    
        Select your database: <br/>
        <input type="checkbox" name="formTables[]" value="A" />Table A<br />
        <input type="checkbox" name="formTables[]" value="B" />Table B<br />
        <input type="checkbox" name="formTables[]" value="C" />Table C<br />
        <input type="checkbox" name="formTables[]" value="D" />Table D<br />
        <input type="checkbox" name="formTables[]" value="E" />Table E<br />
    
        <input type="submit" name="formSubmit" value="Submit" />
    
    </form>
    

    现在是 PHP 脚本:

    <?php
      $pdo_connection = new PDO('mysql:host=localhost;dbname=test', 'demouser', 'demopass');
      $tables = $_POST['formTables'];
      if(empty($tables)) 
      {
        echo("You didn't select any tables.");
      } 
      else
      {
        $N = count($tables);
    
        echo("You selected $N table(s): ");
    
        for($i=0; $i < $N; $i++)
        {
          $sql = "INSERT INTO $tables[$i](nameID_column);
          $stmt = $pdo_connection->prepare($sql);
          $stmt->bindParam(':nameID_column', $_POST['name_id'], PDO::PARAM_STR);
          $stmt->execute(); 
          echo("Your ID Name was inserted into table $tables[$i] ! <br /> ");
        }
      }
    ?>
    

    【讨论】:

      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      相关资源
      最近更新 更多