2012-10-25 41 views
0

我想在MySQL中創建一個臨時數據庫。該行的內容來自我使用PHPQuery解析的外部頁面。 for循環運行的次數也取自該頁面,運行頁面上存在元素的次數。插入MySQL x次數?

以下代碼幾乎無法工作。我認爲它會運行代碼$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); 
+0

我看不到任何東西執行SQL裏面的for循環? – wgcrouch

+0

@WayneC我用完整的代碼更新了我的OP。 – Charlie

回答

2

無論mysql_query也需要在該循環內。

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

串接每條語句,並用分號分隔它們