2017-02-15 6 views
0

私は穏やかな気がします。私はPHPとMySQLの新機能です。
私はPDOを使用してMySQLとの間でデータの挿入および取得を試みています。ここ は、私はstackoverflowのからのこの記事によると修正を加え PHPを使用してMySQLとの間で配列データを挿入および取得するpdo

<FORM ACTION="index.php" METHOD=POST> 

Update# : 
<INPUT TYPE=TEXT NAME="update_num" align="left" LENGTH=2 required > 
<P> 

<P> 
ETO  : 
<INPUT TYPE=TEXT NAME="eto" LENGTH=30 > 
</P>  

<P> 
CAD# : 
<INPUT TYPE=TEXT NAME="cad" LENGTH=30 > 
</P>  

<p> 
CMS: 
</p> 
<h6>Hold Down control(CTRL) key to select multiple CMSs</h6> 
<SELECT NAME = "cms[]" multiple> 
<option></option>> 
<option>#1</option>> 
<option>#2</option>> 
<option>#3</option>> 
<option>#4</option>> 
</SELECT> 
</p> 
<INPUT TYPE=SUBMIT VALUE="Submit Form" align="center"> 

</FORM> 
</INPUT> 

POST

を使用して、私のPHPにデータを送信するHTMLフォームです: Getting All $_POST From Multiple Select Value

私のPHPコードは次のようになります。

$sql = "INSERT INTO dutypage (update_num, eto, cad, cms) VALUES (:update_num, :eto, :cad, :cms)"; 
$stmt = $conn->prepare($sql); 

$stmt->bindParam(':update_num', $_POST['update_num']); 
$stmt->bindParam(':eto', $_POST['eto']); 
$stmt->bindParam(':cad', $_POST['cad']); 
$stmt->bindParam(':cms', $_POST['cms']); 

$stmt->execute(); 

データが正常に挿入されましたが、現在は列が表示されます。

MYSQL screenshot

私はデータに

$query="SELECT cms FROM dutypage ORDER BY dateOf DESC"; 
$data=$conn->query($query); 
$result = $data->fetchAll(PDO::FETCH_ASSOC); 
var_dump($result); 
foreach ($result as $output) { 
    echo $output['cms']; 
    echo "<br>"; 
} 

を取得するには、次のコードを使用して、私はこれだけを取得:

array(1) { [0]=> array(1) { ["cms"]=> string(5) "Array" } } Array 

形で私の選択したオプションは、実際の配列に渡されていますMySQL?

+0

実際にテキストコンテンツであるものの膨大な膨大なスクリーンショットを入れないようにしてください。その形式でコードをカットアンドペーストすることはできません。問題を再現しようとするとしばしば役立ちます。 – tadman

答えて

1

<SELECT NAME = "cms[]" multiple> 
<option></option> 
<option>#1</option> 
<option>#2</option> 
<option>#3</option> 
<option>#4</option> 
</SELECT> 

$_POST['cms']の値は、選択された値を含む配列であろう。

あなたは行うことができます。

1)あなたが実行されているのmysqlによっては、あなたがセットアップ「CMS」JSONタイプの列とは、JSON形式で値を格納することができ

2)あなたが保存することができます値をテキストとして読み込み、値を読み取った後に操作を行います。 (推奨しません)。

$stmt->bindParam(':cms', json_encode($_POST['cms'])); 

3)あなたはupdate_numとCMSが含まれています多くのテーブルに新しいものを作成することができます。選択したすべての値について、そのテーブルに新しい挿入物を作成してください。

1

PHPは$ _POST ["cms"]配列を文字列に変換しようとしますが、これは基本的に不可能です。 PHPは文字列 "Array"を出力します。
配列をdbsに保存する場合は、json_encode関数を使用してJSONでエンコードすることをお勧めします。
そうのbindParam:CMSは次のようになります。
$stmt->bindParam(':cms', json_encode($_POST['cms']));
そしてフェッチ、単に文字列にjson_decode機能を使用するときには、アレイを取り戻すために。

素晴らしい一日を過ごしましょう。複数の選択フォームとしてCMSを設定しているので

関連する問題