0

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

以下代码几乎无法正常工作。我假设它会运行$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);
4

3 回答 3

2

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

于 2012-10-25T22:02:12.780 回答
1

我不知道这是否是您需要的,但这段代码将首先构建一个查询,然后执行一次。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);
于 2012-10-25T22:09:53.027 回答
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]');";
}

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

于 2012-10-25T22:10:03.033 回答