2012-04-30 7 views
1

私は約1000レコードをMySQLに不活性化しようとしています。しかし、私の試みは、最初のクエリにのみ '挿入'します。その後、私は 'または死ぬ'エラーメッセージを取得します。 if文を乱数(5以外)に変更しようとしましたが、最初の挿入後には常に死ぬでしょう。私は間違って何をしていますか?MySQLのクエリは、初めてのループでのみ動作します

$i=0; 
foreach(.....){ 
    if($>5){ 
     insert($name, $phone); 
    } 
} 

function insert($n, $p){ 

    $dbhost = "---"; 
    $dbuser = "---"; 
    $dbpass = "---"; 
    $dbname = "---"; 

    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to mysql"); 
    mysql_select_db($dbname); 

    $query ="INSERT INTO foo (name, phone) VALUES ('$n', '$p')"; 
    mysql_query($query) or die('Error, query failed'); 
    mysql_close(); 
} 
+0

2つのことを答えるために必要とされています。 –

+0

1000回の接続と切断は、あまりにも多くのオーバーヘッドであり、正常よりも悪くなります。 MySQLサーバがネットワークのどこかにある場合はどうなりますか? –

答えて

2

プライマリキーエラーが発生しましたか?

+0

私は "Error connecting to mysql"というメッセージが表示されています。どのように私はより詳細なメッセージを得るだろうか? –

+0

明らかに、それが問題でした。プライマリキーを間違って設定しました。私はテーブルを設定するときにautoindexに設定する必要がありました。ありがとう。 –

3

これはあなたのコードだけdisconnecting and reconnecting is a VERY EXPENSIVE OPERATIONに続く1行を挿入するためのMySQLへの接続

$i=0; 
foreach(.....){ 
    if($>5){ 
     insert($name, $phone); 
    } 
} 

function insert($n, $p){ 

    $dbhost = "---"; 
    $dbuser = "---"; 
    $dbpass = "---"; 
    $dbname = "---"; 

    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to mysql"); 
    mysql_select_db($dbname); 

    $query ="INSERT INTO foo (name, phone) VALUES ('$n', '$p')"; 
    mysql_query($query) or die('Error, query failed'); 
    mysql_close(); 
} 

です!

はこのようにそれを再編成してください:テーブル構造やSQLエラー:

$dbhost = "---"; 
$dbuser = "---"; 
$dbpass = "---"; 
$dbname = "---"; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to mysql"); 
mysql_select_db($dbname); 
$i=0; 
foreach(.....){ 
    if($>5){ 
     insert($name, $phone); 
    } 
} 
mysql_close(); 

function insert($n, $p){ 
    $query ="INSERT INTO foo (name, phone) VALUES ('$n', '$p')"; 
    mysql_query($query) or die('Error, query failed'); 
} 
関連する問題