2016-05-02 17 views
2

他のウェブサイトからデータを取得し、それをmysqlテーブルに挿入または追加するスクリプトを作成しました。私はウェブサイトからデータを取得するために使用すると正しく動作しますが、mysqlに挿入するとそのことはできません。エラー番号:mysqlテーブルにランダムにデータを挿入する方法

Error: INSERT INTO body (title) VALUES (Offworld Trading Company Free Download) 

SQL構文に誤りがあります。 2行目のエラー:INSERT INTO本体(本体)VALUES(

ここで私のコードは何が間違っているのかを見てください。

require_once('simple_html_dom.php'); 
$html = new simple_html_dom(); 
$xml = simplexml_load_file("sitemap.xml"); 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "kuta"; 
// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
foreach ($xml->url as $s) { 
    $s = $s->loc; 
    $html = file_get_html($s); 
    $element = $html->find('div[class=post-content clear-block]'); 
    // Find all links 
    $vez = $html->find('div[class=post-date]'); 
    $p = '|<a [^>]*href="http://<Some Url>[^"]*"[^>]*>.*</a>|iU'; 
    $h = $html->find('h1[class=title]'); 
    if (empty($vez)) { 
     foreach ($h as $ha) { 

      $q = strip_tags($ha->plaintext); 
      $sql = "INSERT INTO body (title) VALUES ($q)"; 
      if ($conn->query($sql) === TRUE) { 
       echo "New record created successfully"; 
      } else { 
       echo "Error: " . $sql . "<br>" . $conn->error; 
      } 
     } 
     foreach ($element as $a) { 
      if ($a === end($element)) { 
       $m = preg_replace($p, '', $a); 
      } 
      $m = strip_tags($m, '<p><a><img><br /><br><div>'); 
      $sql = "INSERT INTO body (body) VALUES ($m)"; 
      if ($conn->query($sql) === TRUE) { 
       echo "New record created successfully"; 
      } else { 
       echo "Error: " . $sql . "<br>" . $conn->error; 
      } 
     } 
    } 
} 
$conn->close(); 

私はテーブルという名前の体を作成した私は

$sql = "INSERT INTO MyGuests (title, body) 
VALUES ('Aditya', 'pandey')"; 

などのデータはどこ私は間違って私を修正見せて挿入すると、すべての物事は、うまくいっている。あなたの答え非常にかなりあり、助けてください。

+0

この変数の周りにコードを表示できますか? – Loko

+0

26行とは何ですか? –

+0

$ SQL変数を初めて使用するとき –

答えて

2

あなたが文字列フィールドに値を挿入すると、右のMySQLの構文は、例えば引用'

の周りにそれらをラップすることです:

$sql = "INSERT INTO body (body) VALUES ('$m')"; 

$qと、すべての文字列に対しても、それを実行してください。私はmysqli_real_escape_string関数を使ってそれらをエスケープして、SQLインジェクションと構文エラーを避けることをお勧めします。

+0

タイトルのようなデータを(n + 1)番目のIDの本文よりもn番目のIDに挿入します。同じidでこれをやりたい –

+0

これを行うには、まずテーブルにデータを正しく挿入する必要があるかどうかを確認します。そしてあなたのタイトルが何を意味するのか分かりません...あなたの文章全体はあなたの文法エラーに関するものなので、最初にテーマを修正し、別の質問で関連するコード部分を使って質問してください。 – vaso123

0

これらのコードを試してください。

$sql = "INSERT INTO body (`title`) VALUES ('$q')"; 

と、

$sql = "INSERT INTO body (`body`) VALUES ('$m')"; 

この情報がお役に立てば幸いです。

+0

タイトルのようなデータを(n + 1)番目のIDの本文よりもn番目のIDに挿入します。私は同じidでこれをしたい –

関連する問題