插入MySQL x次数?

时间:2012-10-25 21:59:21

标签: php phpquery

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

以下代码几乎无效。我假设它将运行代码$number次,其中$i每次运行时增加1。这样,它会将$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);

3 个答案:

答案 0 :(得分:2)

mysql_query也需要在该循环中。

答案 1 :(得分:1)

我不知道你需要的是什么,但是这段代码将首先构建一个查询,然后执行一次。 Yhis查询将一次性插入您想要插入的所有内容。如果$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);

答案 2 :(得分:0)

试试这个:

$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]');";
}

连接每个语句并用分号

分隔它们