2016-04-15 8 views
-1

PHPで奇妙なエラーが発生しました。ここでphp mysqlクエリで奇妙なエラーが発生しましたが、phpmyadmin sqlでクエリがうまく動作しています。

は、それはあなたがあなたのSQL構文でエラーが発生している次のエラー

を返すコード

$query = "INSERT INTO `mobile_spacification` (`id`,`product_name`,`gsmarenaurl`, `network_technology`, `ntwrk_2gband`, `ntwrk_3gband`, `ntwrk_4gband`, `ntwrk_speed`, `ntwrk_gprs`, `ntwrk_edge`, `launch_anu`, `launch_status`, `body_diman`, `body_weight`, `body_sim`, `display_type`, `display_size`, `display_resolution`, `display_multitouch`, `display_protection`, `plateform_os`, `plateform_chipset`, `plateform_cpu`, `plateform_gpu`, `memory_crdslot`, `memory-internal`, `camera_primary`, `camera_feature`, `camera_video`, `cemara_secondary`, `sound_alert_type`, `sound_loudspeaker`, `audio_jack`, `comms_wlan`, `comms_bluetooth`, `comms_gps`, `comms_radio`, `comms_usb`, `feature_sensor`, `feature_messaing`, `feature_browser`, `featuer_java`, `feature_misc`, `battery_type`, `battery_stndby`, `battery_talktime`, `misc_color`) 
        VALUES 
      (NULL,'$name','$site','".$table_field['Technology']."','".$table_field['2G bands']."','".$table_field['3G bands']."','".$table_field['4G bands']."','".$table_field['Speed']."','".$table_field['GPRS']."','".$table_field['EDGE']."','".$table_field['Announced']."','".$table_field['Status']."','".$table_field['Dimensions']."','".$table_field['Weight']."','".$table_field['SIM']."','".$table_field['Type']."','".$table_field['Size']."','".$table_field['Resolution']."','".$table_field['Multitouch']."','".$table_field['Protection']."','".$table_field['OS']."','".$table_field['Chipset']."','".$table_field['CPU']."','".$table_field['GPU']."','".$table_field['Card slot']."','".$table_field['Internal']."', 
      '".$table_field['Primary']."','".$table_field['Features']."','".$table_field['Video']."','".$table_field['Secondary']."','".$table_field['Alert types']."','".$table_field['Loudspeaker']."','".$table_field['3.5mm jack']."','".$table_field['WLAN']."','".$table_field['Bluetooth']."','".$table_field['GPS']."','".$table_field['Radio']."','".$table_field['USB']."','".$table_field['Sensors']."','".$table_field['Messaging']."','".$table_field['Browser']."','".$table_field['Java']."','".$table_field['Other Features']."','".$table_field['battery_type']."','".$table_field['Stand-by']."','".$table_field['Talk time']."','".$table_field['Colors']."');"; 


echo $query = preg_replace("/\r|\n/", "",htmlentities($query, ENT_QUOTES));    
$query_run = mysqli_query($conn,$query) or die("<br><br>".mysqli_error($conn)); 

です。ラインで、「http://www.gsmarena.com/samsung_galaxを '「」(2016)サムスンギャラクシーJ3」を近く使用する権利構文については、ご使用のMariaDBサーバーのバージョンに対応するマニュアルをチェックすると、1

それはそこにあるときに我々は、エラーのようなものを持って大丈夫です構文エラー私はphpmyadminの中でこのクエリを実行するときにエコーが、私はそれが正常に動作しますが、何のエラーを得ない

INSERT 
INTO 
    `mobile_spacification`(
    `id`, 
    `product_name`, 
    `gsmarenaurl`, 
    `network_technology`, 
    `ntwrk_2gband`, 
    `ntwrk_3gband`, 
    `ntwrk_4gband`, 
    `ntwrk_speed`, 
    `ntwrk_gprs`, 
    `ntwrk_edge`, 
    `launch_anu`, 
    `launch_status`, 
    `body_diman`, 
    `body_weight`, 
    `body_sim`, 
    `display_type`, 
    `display_size`, 
    `display_resolution`, 
    `display_multitouch`, 
    `display_protection`, 
    `plateform_os`, 
    `plateform_chipset`, 
    `plateform_cpu`, 
    `plateform_gpu`, 
    `memory_crdslot`, 
    `memory-internal`, 
    `camera_primary`, 
    `camera_feature`, 
    `camera_video`, 
    `cemara_secondary`, 
    `sound_alert_type`, 
    `sound_loudspeaker`, 
    `audio_jack`, 
    `comms_wlan`, 
    `comms_bluetooth`, 
    `comms_gps`, 
    `comms_radio`, 
    `comms_usb`, 
    `feature_sensor`, 
    `feature_messaing`, 
    `feature_browser`, 
    `featuer_java`, 
    `feature_misc`, 
    `battery_type`, 
    `battery_stndby`, 
    `battery_talktime`, 
    `misc_color` 
) 
VALUES(
    NULL, 
    'Samsung Galaxy J3 (2016)', 
    'http://www.gsmarena.com/samsung_galaxy_j3_(2016)-7760.php', 
    'GSM/HSPA/LTE', 
    'GSM 850/900/1800/1900 - SIM 1 & SIM 2 (dual-SIM model only)', 
    'HSDPA 850/900/1900/2100 - J320F J3109', 
    'LTE band 1(2100) 3(1800) 5(850) 7(2600) 8(900) 20(800) - J320F', 
    'HSPA 42.2/5.76 Mbps LTE Cat4 150/50 Mbps', 
    'Yes', 
    'Yes', 
    '2015 November', 
    'Available. Released 2016 January', 
    '142.3 x 71 x 7.9 mm (5.60 x 2.80 x 0.31 in)', 
    '138 g (4.87 oz)', 
    'Single SIM (Micro-SIM) or Dual SIM (Micro-SIM dual stand-by)', 
    'Super AMOLED capacitive touchscreen 16M colors', 
    '5.0 inches (~68.2% screen-to-body ratio)', 
    '720 x 1280 pixels (~294 ppi pixel density)', 
    'Yes', 
    '', 
    'Android OS v5.1.1 (Lollipop)', 
    'Spreadtrum SC8830', 
    'Quad-core 1.2 GHz Cortex-A7', 
    'Mali-400', 
    'microSD up to 128 GB (dedicated slot)', 
    '8/16 GB 1.5 GB RAM', 
    '8 MP f/2.2 autofocus LED flash - J3109 J320F5 MP autofocus LED flash - J320P', 
    'Sensors', 
    '[email protected] (J3109) [email protected] (J320P J320F)', 
    '5 MP f/2.2 [email protected] - J3109 J320F2 MP - J320P', 
    'Vibration; MP3 WAV ringtones', 
    '', 
    '', 
    'Wi-Fi 802.11 b/g/n Wi-Fi Direct hotspot', 
    'v4.1 A2DP', 
    'Yes with A-GPS GLONASS/ BDS (region dependent)', 
    'FM radio RDS recording', 
    'microUSB v2.0 USB On-The-Go', 
    'Accelerometer proximity', 
    'SMS(threaded view) MMS Email Push Mail IM', 
    'HTML5', 
    'No', 
    '- Active noise cancellation with dedicated mic - MP4/H.264 player - MP3/WAV/eAAC+/Flac player - Photo/video editor - Document viewer', 
    'Removable Li-Ion 2600 mAh battery', 
    'Up to 349 h', 
    'Up to 22 h', 
    'White Black Gold' 
); 

を言う

私はいつものphpMyAdminのSQLにそれを貼り付け、クエリをエコーし​​ようとすると、コピーしない何をしたので、私はとても混乱しているPHPを実行してエラーを返します....

+1

「Samsung Galaxy J3(2016)」に2つの引用符があるようですが、それは明らかに問題です。このデータはフォームからのものですか? –

+0

構文エラーがある場合、このデータは他のサイトから抽出されていませんなぜphpmyadminでうまく動作していますか?私はとても混乱しています –

+0

str_replace( "'"、' '、$ query)からクエリを実行して、それを実行することができますか...動作しているかどうかを確認してください。 –

答えて

0

クエリ文字列全体でhtmlentities(..., ENT_QUOTES)を使用することはできません。

あなたのエコーがブラウザによって解析されるので、あなたは正しいクエリを参照していますが、HTMLソースを見てみるならば、あなたはこのようなものが表示されます:

(...) VALUES (NULL,&#039;Something&#039; (...) 

ENT_QUOTESを削除します。

実際には、クエリ全体ではなく、各フィールドを処理することをお勧めします。ベストプラクティスは、準備済みのステートメントを使用することです。

+0

それは私の心にはっきりと来たので、私は要素インスペクタからコードをコピーして貼り付けようとしましたが、エラーもなく動作します –

+0

申し訳ありませんが、このコメントのためにビューのソースクエリが長すぎる原因となります。 –

+0

@RishabhGusain https: /eval.in/553913ページソースはインスペクタではありません。 – fusion3k

関連する問題