【问题标题】:Inserting 1200 records with PHP not working用 PHP 插入 1200 条记录不起作用
【发布时间】:2016-03-07 03:45:45
【问题描述】:

我正在为我的学校创建一个登录服务的项目。到目前为止一切正常,但我希望能够将所有学生信息(大约 1200 条记录)从 Excel 传输到数据库。

如果我能够从网站上执行此操作,那将是最好的,但目前无法正常工作。

我浏览了这里的一些帖子,但找不到合适的解决方案

INSERT INTO leerlingen (Stamnr, Klas, Roepnaam, Tussenv, Achternaam, Adres, Postcode, Woonplaats,Telefoon, Geboortedatum, Binnen, Betaald) VALUES(8101466,'class','name','','name','street','number','city','phone number','bday',0,0);

如果我只使用一个插入语句,它可以正常工作,但是当我尝试发送 2 个或更多时它没有,我没有收到错误,但它什么也没做。

<!DOCTYPE html>

<head>
<script style="tekst/javascript" src="main.js"></script>
<title>Zlv pasjessysteem</title>
<link rel="stylesheet" type="text/css" href="1.0.css">
</head>
<body onload="screen()">
  <div id="Screen"> <!-- Deze div gaat over het hele scherm-->
    <div id="Menubalk"> <!-- Dit geeft de menubalk aan-->
      <li>
        <ul><a href="Index.php">Home</a></ul>  <!-- Dit geeft de link voor de Home knop aan-->
        <ul><a href="Help.php">Help</a></ul>  <!-- Dit geeft de link voor de Help knop aan-->
        <ul><a href="Instellingen.php">Instellingen</a></ul>  <!-- Dit geeft de link voor de Instellingen knop aan-->
        <ul><a href="Statistiek.php">Statistiek</a></ul>  <!-- Dit geeft de link voor de Statistiek knop aan-->
        <ul><a href="Credits.html">Credits</a></ul>  <!-- Dit geeft de link voor de Credits knop aan-->
      </li>
    </div>
    <div id="tekst">
    <h3>code vanuit je excel bestand voor de nieuwe database</h3>
    <form action="instellingen.php" method="post"><!--maak het form-->
      <textarea name="code"></textarea><br><!--code insert comes here-->
      <input type="submit" value="verstuur"><!--verzend knop-->
    </form>
    <h3>weg met de database</h3>
    <form action="instellingen.php" method="post"><!--maak het form-->
       <input type="submit" value="verwijder database"><!--verzend knop-->
       <input style='display:none;' type=" text" value="remove" name="code"><br><!--remove database-->
    </form>
    </div>
  </div>

<?php
$servername = "localhost";//connect met de database door middel van deze variabelen
$username = "root";
$password = "";
$dbname = "zlv";
// begin de verbinding
$conn = mysqli_connect($servername, $username, $password, $dbname);
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());//verbinding mislukt? geef error message
    exit();
}
$code = " ";
if (isset($_POST["code"])){$code=$_POST["code"];
  if($code=="remove"){
    $sql="DELETE FROM leerlingen";
  mysqli_query($conn, $sql);
  }
  else{
  $sql=$code;
  echo $sql;
  $sql="INSERT INTO leerlingen (Stamnr, Klas, Roepnaam, Tussenv, Achternaam, Adres, Postcode, Woonplaats,Telefoon, Geboortedatum, Binnen, Betaald) VALUES(8101466,'value','value','','value','value','value','value','value','1998-04-12',0,0);
INSERT INTO leerlingen (Stamnr, Klas, Roepnaam, Tussenv, Achternaam, Adres, Postcode, Woonplaats,Telefoon, Geboortedatum, Binnen, Betaald) VALUES(8111963,'value','value','','value','value','value','value','value','2003-12-03',0,0)
";
  mysqli_query($conn, $sql) or die(mysql_error());;
  }
}

?>

</body>

请注意,我将所有多个查询放在一个变量中(不确定是否可以)。我需要用其他方法还是有更简单的方法?

【问题讨论】:

  • 首先你混合了mysql_*mysqli_*函数。那是行不通的。
  • mysqli_query() 只会做一个查询。您的 $sql 是 2 个查询。
  • 请不要在您的标题中添加诸如 fixed 之类的内容。您将答案标记为已接受。那会做的。相关help page

标签: php mysql sql insert


【解决方案1】:

您需要使用 mysqli_multi_query(...) 而不是 mysqli_query(...) 。然后您可以一次执行多个查询。

在这里查看:http://php.net/manual/de/mysqli.multi-query.php

但是,您可以使用一条insert into 语句插入多条记录。

INSERT INTO (id, col2, col3)
VALUES (1, val1, val2),
(2, val3, val4),
(3, val5, val6);

这将输入三个新记录。

在这里查看更多信息:http://dev.mysql.com/doc/refman/5.7/en/insert.html

【讨论】:

    【解决方案2】:

    除非您将查询更改为单个查询,否则它不适用于mysqli_query()

    INSERT INTO leerlingen 
                (stamnr, 
                 klas, 
                 roepnaam, 
                 tussenv, 
                 achternaam, 
                 adres, 
                 postcode, 
                 woonplaats, 
                 telefoon, 
                 geboortedatum, 
                 binnen, 
                 betaald) 
    VALUES      (8101466, 
                 'ZH5b', 
                 'Sheri', 
                 '', 
                 'Zwietering', 
                 'hacker road 123', 
                 '1234 aa', 
                 'stad', 
                 '075-123456789', 
                 '1998-04-12', 
                 0, 
                 0), 
                (8111963, 
                 'ZA1a', 
                 'Maaike', 
                 '', 
                 'lastname', 
                 'hacker road 12', 
                 '1234 aa', 
                 'stad', 
                 '075-123456789', 
                 '2003-12-03', 
                 0, 
                 0) 
    

    如果您需要多个查询,请使用mysqli_multi_query() 查看@blckbird 答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      相关资源
      最近更新 更多