2

したがって、Webページからプレーンテキストのデータ文字列をスクレイピングして変数配列を作成しました(Simple HTML DOM Parserクラスを使用)。この変数は、より簡潔で使いやすいようにフォーマットされています。

このデータを MySQL テーブルにエクスポートしたいと考えています。テーブル名は Web ページのタイトル (個別にスクレイピング) であり、データ入力は配列であり、Web ページから抽出された各単語は個別のデータ レコードです。

これが私のコードです( $trimmed は、ユーザー入力Webページからスクレイピングされたデータのフォーマットされた変数文字列です):

$trimmed->plaintext=trim($trimmed->plaintext);
$array = (explode(" ", $trimmed->plaintext));
$printarray = print_r ($array);

mysql_select_db("test", $connect) or die ('Could not find database.');
$sql = "CREATE TABLE '$title'";

$myquery = sprintf("INSERT INTO WebPage '%s'  
    VALUES '%s'",
    mysql_real_escape_string($title->plaintext),
    mysql_real_escape_string($printarray));
$result = mysql_query($myquery);

if (!$result) {
    $message  = '<br /><br /><br /> Invalid query: ' . mysql_error() . "\n";
    $message .= '<br /><br /> Whole query entered here: ' . $myquery;
    die($message);
}

これを試すと、次
のようなエラーが表示されます: 無効なクエリ: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の ''Example Domain' VALUES '1'' 付近で使用する正しい構文を確認してください。

ここに入力されたクエリ全体: INSERT INTO WebPage 'サンプル ドメイン' VALUES '1'

必要に応じてさらにコードを提供できます。これについて十分に説明できていない場合は、事前に申し訳ありません。私はこれにかなり慣れていません。

前もって感謝します。

4

3 に答える 3

1

あなたのSQL:

INSERT INTO WebPage 'Example Domain' VALUES '1'

有効じゃない。多分あなたは意味した:

INSERT INTO `WebPage` ('Example Domain') VALUES ('1')

補足として、Example Domain実際に列名の場合: フィールド名にスペースを使用しないでください。

于 2013-02-19T14:00:07.103 に答える
0

からの出力をクエリに取り込もうとしているかのように見えprint_rます。print_r配列からページにデータを出力する関数と同様に、これは不可能です。

配列の内容をデータベースに格納するjson_encodeために、配列を文字列に変換するために使用できます。次に、それを取得するときに json_decode を使用するので、php 配列に戻します。

例えば

$myquery = sprintf("INSERT INTO `WebPage` ('%s')  
VALUES ('%s')",
json_encode($title->plaintext),
json_encode($array)); //not $printarray as that is not an actual array

編集:他の人が指摘したように、mysql_real_escape_stringは非推奨の機能であるため、文字をエスケープするには他の方法を使用する必要があります。

edit2:serializeの代わりに使用することもできますがjson_encode、相対的な長所/短所はわかりません。より理想的な方法は、データベース テーブルを再構築して、配列のすべての内容を個別のデータとして収容することですが、これは実際的でない場合もあります。

于 2013-02-19T14:05:38.483 に答える
0

ここには多くのエラーがあります。

まず、挿入用に生成している SQL が正しくないようです。

INSERT INTO tableName (fields) VALUES (values)

あなたのコードは言う:

INSERT INTO WebPage 'plainText' VALUES (array)

Web ページのタイトルのような名前のテーブルを作成する場合は、Web ページを削除する必要があります。さらに、それは単一の単語でなければなりません (空のスペースを「_」のようなものに置き換えてください)。

次に、テーブルを作成する必要があります。挿入を行う前に、適切な CREATE TABLE 構造が必要です。

3 番目に、フィールド (列) ごとに値を挿入する場合、echo print_r は機能しません。配列を繰り返し、キーごとに値を挿入する必要があります。ただし、テーブルの列を作成するために、これを既に行っている必要があります。

于 2013-02-19T14:02:12.170 に答える