【问题标题】:Save 1000s of data into mysql in most efficient way以最有效的方式将 1000 条数据保存到 mysql 中
【发布时间】:2017-11-13 21:47:19
【问题描述】:

我在 mysql 数据库中有将近 7000 条数据。有些列是空的,我想用相关数据填充它们。我正在显示来自 mysql 的数据,并用表单和插入的输入包装了空字段。代码如下;

while ($row = mysqli_fetch_array($results)) {
echo '
<form action="" method="post">
    <tr>
        <td>'._date($row["time"]).'</td>
        <td>$row["name"]</a>
        <br><input name="name" class="form-control input-sm" value="New name" >
        </td>
        <td>info@domain.com<br>
        <input name="email" class="form-control input-sm" value="newemail@domain.com" >
        </td>
        <td>0123456789<br>
        <input name="telephone" class="form-control input-sm" value="0987654321" >
        </td>
        <td>111 Some street name<br>
        <input name="address" class="form-control input-sm" value="New road name and address" >
        </td>
        <td>category</td>
        <td>
            <button type="submit" class="btn btn-success btn-flat"><i class="fa fa-save fa-fw"></i></button>
            <a href="index.php?p=subscribers&delete='.$row["id"].'" class="btn btn-danger btn-flat"><i class="fa fa-trash fa-fw"></i></a>
        </td>
    </tr>
</form>
';}

如您所见,我可以选择单独保存它们,但我也想一次保存所有显示的数据。显示所有数据可能会很慢,所以我想我需要一次显示一小部分。

谁能告诉我我可以一次保存所有显示的表单输入吗?

【问题讨论】:

  • 我们总是乐于帮助和支持新的编码员,但您需要先帮助自己。 :-)doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用并提供a Minimal, Complete, and Verifiable example。阅读How to Ask 一个好问题。请务必take the tour 并阅读this
  • 使用一个表单,而不是每行一个表单,然后简单的提交->保存
  • 一旦我使用一个表单,如何区分哪个输入值将保存到哪一行?
  • name="name['.$row["id"].']"name="data['.$row["id"].'][name]" 将生成不错的多维数组,您可以使用
  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 程序接口是 PHP 4 时代引入的 mysqli API 的产物,不应在新代码中使用。

标签: php mysql forms


【解决方案1】:

在做了更多的研究之后,我终于找到了一个解决方案,我在这里为任何需要它的人发帖。

if (isset($_POST['update'])){
    for($i=0; $i<count($_POST['id']); $i++){    
       $sql = "
        UPDATE test 
        SET 
            name        = '".$_POST['name'][$i]."',
            email       = '".$_POST['email'][$i]."',
            telephone   = '".$_POST['telephone'][$i]."' 
        WHERE id = '".$_POST['id'][$i]."'";

        if ($con->query($sql) === TRUE) {
            //echo "Record updated successfully";
        } else {
            echo "Error updating record: " . $con->error;
        }

    }
}


$sql = "SELECT * FROM test ORDER BY id ASC LIMIT 5";
$results = $con->query($sql);

if (mysqli_num_rows($results) > 0) {
     echo '<form action="" method="post">';
     echo '<input type="hidden" name="update"  >';
    // displaying records.
    while ($row = mysqli_fetch_array($results)) {
        echo '
            <input type="hidden" name="id[]" value="'.$row["id"].'" >
            <tr>
                <td><input type="text" name="name[]" class="form-control input-sm" value="'.$row["name"].'" ></td>
                <td><input type="text" name="email[]" class="form-control input-sm" value="'.$row["email"].'" ></td>
                <td><input type="text" name="telephone[]" class="form-control input-sm" value="'.$row["telephone"].'" ></td>
            </tr>
        ';
    }
    echo '<input type="submit" value="update">';
    echo '</form>';
}else {
    echo "No records are found.";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2016-09-02
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多