首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >插入MySQL x次?

插入MySQL x次?
EN

Stack Overflow用户
提问于 2012-10-26 05:59:21
回答 3查看 637关注 0票数 0

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

下面的代码几乎不起作用。我假设它会运行代码$number的次数,其中$i每运行一次就增加一次。这样,它会将$new[0]$new[1]$new[2]等插入到数据库中。问题是,它只插入最后一个实例。

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

代码语言:javascript
运行
复制
$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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-26 06:02:13

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

票数 2
EN

Stack Overflow用户

发布于 2012-10-26 06:09:53

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

代码语言:javascript
运行
复制
$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);
票数 1
EN

Stack Overflow用户

发布于 2012-10-26 06:10:03

试试这个:

代码语言:javascript
运行
复制
$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]');";
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13077965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档