2008-09-15 4 views
6

リモートサーバーでテーブルのダンプを行う必要がありますが、サーバーに直接アクセスすることはできません。私が持っている唯一のアクセスは、PHPスクリプトです。SQL文を返すMySQL文ですか?

MySQLはmysqldumpが返されるかのように、

INSERT INTO `table_name` (`field1`, `field2`) VALUES ('a', 'b'), ('c', 'd') 

文を返します。その中で、いくつかの方法はありますか?

私はphpMyAdminにアクセスすることはできません。execsystemまたはpassthruを使用しないことをお勧めします。

は、あなたがこれを見てとるのexecまたはパススルー
2)からのmysqldumpを実行することができ、別のエクスポート方法

答えて

0

サーバー上のphp-スクリプトを使用することができます私phpmyadminをお勧めします。次に、Webインターフェイスからこれを行うことができます。

+0

を開始し得るかどうかを確認してください! –

0

PHPMyAdminをチェックアウトする必要があります。これはPHPベースのMySQL管理ツールです。データベースのバックアップとリカバリだけでなく、データベースサーバーへの 'GUI'もサポートしています。それはとてもうまくいく。

0

この

select 'insert into table table_name (field1, field2) values' 
     || table_name.field1 || ', ' || table_field2 || ');' 
from table_name 

はあなたが始める必要があります。置換する|| db flavorの文字列連結演算子で置き換えます。 field1またはfield2が文字列の場合は、引用/エスケープのためにいくつかのトリックが必要です。

0

多くの個別のクエリ文を生成する1つの方法です。また、より効率的に文字列を結合するためにimplodeを使用することもできますが、これは初心者にとっては読みやすいので、これから100万回のアプローチが可能です。

$results = mysql_query("SELECT * FROM `table_name`"); 
while($row = mysql_fetch_assoc($results)) { 

    $query = "INSERT INTO `table_name` "; 
    $fields = '('; 
    $values = '('; 

    foreach($row as $field=>$value) { 
     $fields .= "'".$field."',"; 
     $values .= "'".mysql_escape_string($value)."',"; 
    } 

    //drop the last comma off 
    $fields = substr($fields,0,-1); 
    $values = substr($values,0,-1); 

    $query .= $fields . " VALUES " . $values; 

    //your final result 
    echo $query; 
} 

それはあなたがあなたがphpMyAdminの勧告に私を打つ

+0

このソリューションの問題は、正確なINSERT文が返されないことです。たとえば、整数を一重引用符で囲みます。 – Jrgns

+0

整数を一重引用符で囲むかアクセント記号( ')で返しますか? –

+0

次の行: $ values。= "'" .mysql_escape_string($ value)。 "'、"; はすべての値を一重引用符( ')で囲みます。一般的には問題ではありませんが、PHPのputcsv関数と同じほど正確ではありません。 – Jrgns

関連する問題