【问题标题】:PHP write more than 1 row to MySQL database at the same time [duplicate]PHP同时向MySQL数据库写入超过1行[重复]
【发布时间】:2014-06-29 18:10:22
【问题描述】:

我有以下代码将条目写入数据库:

<?php
$database = 'abc';
$dbhost = 'abc.com';
$dbuser = 'abc';
$dbpass = 'abc';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
$key = 'abc';

$checkKey = $_GET['key'];

if ($key === $checkKey) {

if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}

$a = mysql_real_escape_string($_GET['a']);
$b = mysql_real_escape_string($_GET['b']);
$c = mysql_real_escape_string($_GET['c']);
$c = $c / 1000;
$d = mysql_real_escape_string($_GET['d']);

$sql = 'INSERT INTO x '.
       '(a,b, c, d) '.
       'VALUES (' .$a. ',' .$b. ',FROM_UNIXTIME(' .$c. '),' .$d. ')';

mysql_select_db($database);

$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not enter data: ' . mysql_error() . ': ' . $sql);
}
echo "Entered data successfully\n";
mysql_close($conn);
} else {
  die('Key not valid!');
}
?>

这很好用,但速度很慢,因为对于我要添加的每一行,我都必须调用一次脚本。例如收集 1000 行然后用这 1000 行调用一次 URL 并将每一行存储在数据库中会不会相当快?如果是,我该如何实现?

【问题讨论】:

  • 您可能知道使用MySQL 插入多行是很容易的(一旦您有了数据,请参阅electrictoolbox.com/mysql-insert-multiple-records)。所以我猜你的问题是sendread 多行到你的脚本?
  • @sanketh 实际上 OP 需要发送和接收一组元素。所以这不仅仅是MySQL 的问题,恕我直言。
  • @AntonioRagagnin 没错!
  • 另外,考虑使用POST 而不是GET。因为您不能在 GET 网址中发送太多数据(我认为您不能在 GET 中发送 1000 个元素,但您可以在 POST 中发送)。
  • 以逗号分隔格式(或您想要的任何格式)发送所有参数,然后解析字符串,构造查询并运行它。

标签: php mysql


【解决方案1】:

您可以使用以下格式使用单个插入语句插入多行:

INSERT INTO table (column1, column2) VALUES
(value1, value2), (value1, value2), (value1, value2)

您可以使用 html 帖子发送多行,如下所示:

<input type="text" name="field1[1]" />
<input type="text" name="field2[1]" />

<input type="text" name="field1[2]" />
<input type="text" name="field2[2]" />

<input type="text" name="field1[3]" />
<input type="text" name="field2[3]" />

$_POST['field1']$_POST['field2'] 在这种情况下将是一个包含 3 个值的数组。

注意,单个请求可以发送多少个字段是有限制的(我认为是1000个)

【讨论】:

  • 谢谢,但是如何使用 POST 请求来做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 2018-06-01
相关资源
最近更新 更多