【问题标题】:Insert into MySQL x number of times?插入 MySQL x 次?
【发布时间】:2012-10-25 21:59:20
【问题描述】:

我想在 MySQL 中创建一个临时数据库。该行的内容取自我使用 PHPQuery 解析的外部页面。 for 循环运行的次数也取自该页面,运行该页面上存在元素的次数。

以下代码几乎无法正常工作。我假设它会运行代码$number 次,其中$i 每次运行都会增加一。这样,它会将$new[0]$new[1]$new[2] 等插入到数据库中。问题是,它只插入最后一个实例。

假设$number 是11,它只会将$new[11] 插入到数据库中。

$server = "localhost";
$username = "***";
$password = "***";
$database = "***";
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);

$number = pq('.trafficbriefs:contains(\'SCHOOLS\')') -> parent() -> find('.maintext') -> length();
for ($i = 0; $i < $number; $i++) {
    $test = pq('.trafficbriefs:contains(\'SCHOOLS\')') -> parent() -> find('.maintext') -> eq($i) -> text();
    $new[$i] = $test;
    $sql = "INSERT INTO Temp (School) ";
    $sql .= "VALUES ('$new[$i]')";
}

if (!mysql_query($sql, $con)) {
        die('Error: ' . mysql_error());
    } else {
        echo "Added to database.";
    }

mysql_close($con);

【问题讨论】:

  • 我看不到在 for 循环中执行 sql 的任何内容?
  • @WayneC 我用完整的代码更新了我的 OP。

标签: php phpquery


【解决方案1】:

无论mysql_query 做什么,都需要在该循环内。

【讨论】:

    【解决方案2】:

    我不知道这是否是您需要的,但这段代码将首先构建一个查询,然后执行一次。 Y他的查询将一次性插入您想要插入的所有内容。如果$number 很大,这会快很多。

    $server = "localhost";
    $username = "***";
    $password = "***";
    $database = "***";
    $con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
    mysql_select_db($database, $con);
    
    $number = pq('.trafficbriefs:contains(\'SCHOOLS\')')->parent()->find('.maintext')->length();
    $queryParts = array();
    for ($i = 0; $i < $number; $i++) {
        $test = pq('.trafficbriefs:contains(\'SCHOOLS\')')->parent()->find('.maintext')->eq($i)->text();
        $queryParts[] = '("' . $test . '")';
    }
    if (empty($queryParts)) {
        throw new Exception('Nothing to insert');
    }
    $query = 'INSERT INTO Temp (School) VALUES ' . implode(', ', $queryParts);
    if (!mysql_query($query, $con)) {
        die('Error: ' . mysql_error());
    } else {
        echo "Added to database.";
    }
    mysql_close($con);
    

    【讨论】:

      【解决方案3】:

      试试这个:

      $sql = "";
      for ($i = 0; $i < $number; $i++) 
      {
          $test = pq('.trafficbriefs:contains(\'SCHOOLS\')') -> parent() -> find('.maintext') -> eq($i) -> text();
          $new[$i] = $test;
          $sql .= "INSERT INTO Temp (School) ";
          $sql .= "VALUES ('$new[$i]');";
      }
      

      连接每个语句并用分号分隔它们

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-13
        • 2014-04-05
        • 2015-05-02
        • 2011-12-20
        • 1970-01-01
        • 1970-01-01
        • 2012-05-06
        • 2017-06-05
        相关资源
        最近更新 更多