2016-06-12 17 views
0

ここに私の目標があります 1.サーバーからIDを1つだけ取り出し、文字列のリストをコンマで区切ります ID = 1、名前=これは私の試みです2. 、青、赤、緑、黄:私はこのコードPHP:区切りのコンマ文字列の値を複数の配列値としてMySqlに挿入する

$myString = "Red,Blue,Black"; 
$myArray = explode(',', $myString); 

2.2を使用して配列に名前を変更しようと、私はこのように私の挿入を試みる 2.1:

$sql="INSERT INTO `cat_interest`(`id`,`categories`) VALUES (1,'".$myArray["categories"]."'"; 
      if (!$result = $mysqli->query($sql)){ 
        $message = array('Message' => 'insert fail'); 
        echo json_encode($message);   
      }else{    
        $message = array('Message' => 'new record inserted'); 
        echo json_encode($tempArray);  
      } 

He私の完全なコードビュー

<?php 
define('HOST','serveraddress'); 
define('USER','root'); 
define('PASS','pass'); 
define('DB','dbname'); 
ini_set('display_errors',1); 
//ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

      $mysqli = new mysqli(HOST,USER,PASS,DB); 
    $message= array();  
     $myString = "Red,Blue,Black";// incoming string comma names 
     $myArray = explode(',', $myString); 

     $sql="INSERT INTO `cat_interest`(`id`,`categories`) VALUES (1,'".$myArray["categories"]."'"; 
       if (!$result = $mysqli->query($sql)){ 
         $message= array('Message' => 'insertion failed'); 
         echo json_encode($message);   
       }else{    
         $message= array('Message' => 'new record inserted'); 
         echo json_encode($message); 
       } ?> 

で再これは私が

       ブルー
        RED      カテゴリー
TABLE
IDの下に達成したいものです        ブラック

挿入後

あなたがvaluesを閉じることはありません、そのSQLは無効ですが、私は

答えて

2

間違っているのか分からない助けてください。また、Explodeは配列を構築しません。

あなたは、有効なSQLステートメントを構築することができる方法のラフな例は

$myString = "Red,Blue,Black";// incoming string comma names 
$myArray = explode(',', $myString); 
print_r($myArray); 
$sql = "INSERT INTO `cat_interest`(`id`,`categories`) VALUES"; 
foreach($myArray as $value){ 
    $sql .= " (1, '{$value}'),"; 
} 
$sql = rtrim($sql, ','); 

デモのようになります。https://eval.in/587840

疑問がある場合には約どのように構築され、使用中のアレイprint_rまたはvar_dump。 mysqliのクエリで問題が発生した場合は、エラー報告http://php.net/manual/en/mysqli.error.phpを使用します。

あなたの現在の使用法では、SQLインジェクションは開かれていませんが、$myStringがユーザの入力やDBから来た場合は可能です。パラメータ化されたクエリを使用して調べる必要があります。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

+0

これは素晴らしいですが、挿入前にコンマ区切りの春から重複値を確認したい場合はどうすればいいですか? – Michael

+0

http://php.net/manual/en/function.array-unique.phpデモ:https://eval.in/587857を使用してください。 – chris85

関連する問題