我想在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);
发布于 2012-10-26 06:02:13
无论mysql_query
做什么,都需要在该循环中。
发布于 2012-10-26 06:09:53
我不知道这是不是你所需要的,但是这段代码将首先构建一个查询,然后执行一次。您的查询将一次性插入您想要插入的所有内容。如果$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-26 06:10:03
试试这个:
$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]');";
}
连接每条语句,并用分号分隔它们
https://stackoverflow.com/questions/13077965
复制相似问题