我想在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);
答案 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]');";
}
连接每个语句并用分号
分隔它们