以下のINSERT IGNOR INTO 文を実行すると以下のようなエラーが生じてしまいます。
string(xxx) "SQLSTATE[42000]: Syntax error or access violation: 1064 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 '://piyopiyo/),(▽ (DD,Ccompany' at line 1"
複数行INSERTする場合にはINSERT IGNORE INTO table (col_1,col_2,col_3) VALUES("a","b","c")でこれにしたがっていると思うのですが、原因が分からずに投稿させていただきました。
col_1,col_2,col_3の型はすべて単純にvarchar(255)でcol_1にprimary keyが設定されているのみです。
また、ご説明の簡略化のためにPDOにも関らず、prepareでプレースホルダを使用しておりませんが飽くまで便宜上のためですので、ご配慮は不要です。
宜しくお願い申し上げます。
php
1<?php 2 require_once('phpQuery-onefile.php'); 3 $html = file_get_contents('sample.html'); 4 $doc = phpQuery::newDocument($html); 5 6 $dsn = 'mysql:dbname=hoge;host=localhost'; 7 $user = 'root'; 8 $password = 'root'; 9 try 10 { 11 $pdo = new PDO($dsn, $user, $password, 12 array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET CHARACTER SET `utf8`')); 13 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 14 15 $sql="INSERT IGNORE INTO daily_db (contents,company,url) VALUES"; 16 foreach($doc["table:eq(0) tr"] as $row) 17 { 18 $sql.="(" 19 .pq($row)->find("td:eq(0)")->text()."," 20 .pq($row)->find("td:eq(3)")->text()."," 21 .pq($row)->find("td:eq(4)")->text() 22 ."),"; 23 } 24 $sql=rtrim($sql, ','); 25 $sql=str_replace('(,,),', '', $sql); 26 $stmt = $pdo->query($sql); 27 28 } 29 catch (PDOException $e) 30 { 31 var_dump($e->getMessage()); 32 } 33 echo $sql; 34 35/*出力結果 36INSERT IGNORE INTO daily_nikkei (contents,company,url) VALUES(▽(AA,B company ,https://piyopiyo/),(▽ (DD,Ccompany ,https://fugafuga/),(FF,G company ,https://barbar/), 37?> 38

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 02:12