dポイントプレゼントキャンペーン実施中!

insertができない。

はじめまして。PHPとDBについて質問です。
マニュアルなどを読んでいろいろといじっていたのですが、どうにもうまくできません。
詳しい方どうかお助け願います。


現在、任意のサイトからHTMLソースを取得して、それをDBに書き込みたいと考えています。
しかしプログラムを動かすと
「You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varXYZ' + (varA1)); varABC = ('varP' + (varA1)); if( document.getElementById )' at line 1」のようなエラーが発生します。


プログラムソースはこんな感じです。
_________________________

$url = "http://www.sample.com/";

$html = file_get_contents($url);
$source = htmlspecialchars($html);
echo $source;

~~~または~~~

$lines = @file($url);
foreach( $lines as $source_num => $source ) {
$array[] = htmlspecialchars($source);
}

echo "<pre>";
print_r($array);
echo "</pre>";

~~~~~~~~~

上記のようなプログラムでソースの取得はできました。

あとは単純にinsertしているのですが。
$sql = "INSERT INTO テーブル名 (source) VALUES ('$source')";
 sourceの種別はtextにしてあります。


さきほどのエラーがでて、insertができません。
いろいろ検索して、serializeとかを使うのかな?とも思ったのですが、
いまだに解決には至っておりません。

どうかよろしくお願いいたします。


環境
Windows7
Apache 2.0.63
PHP 5.2.6
Mysql 5.0.51b
Smarty 2.6.19
SQLite 3.5.9
PhpMyAdmin 2.11.7
SQLiteManager 1.2.0
ZendOptimizer 3.3.3

A 回答 (2件)

とりあえず、エスケープはしたほうがいいと思います。



mysql なら ↓これ。
http://php.net/manual/ja/function.mysql-real-esc …
    • good
    • 0

文法エラーですから単純にprint $sql;をデバッグで見てみればわかるのでは?

この回答への補足

yambejp様

早速のご回答ありがとうございます。
文法エラーなのは、わかるのですが解決できなかったので質問させていただきました。

とりあえず、base64を使うことにより、暫定的に解決いたしました。
しかし、他にもいい方法があると思うので、回答はまだ募集いたします。
よろしくお願いいたします。

補足日時:2010/10/28 15:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!