2012-02-22 10 views
0

私はmysqlデータベースにデータを保存していますが、これは別のオプションになります。配列が爆発して保存されます

mysqlの表面は次のようになります:grass、pavement、tarmac - 私は表示するデータを得ることができますが、新しいオプションを追加したりオプションを削除した後、何らかの理由で保存できません。

EDIT - これは現在機能しています。私はここに再掲載します。他人の助けが必要です!おかげ

追加:

$surface = mysql_real_escape_string($_POST['surface']); 
    $array = explode(',',$setQuery['Surface']); 
    $new_array = implode(',',$array).','.$surface; 
    $saveSettings = mysql_query("UPDATE `settings` SET Surface = '$new_array' WHERE id = '1'"); 

の削除: よろしくカンマ区切りの文字列にあなたのアレイを構築するためにforループを使用した

+6

停止列に配列要素に参加するすべての 'for'ループナンセンスおよび['破を() 'を使用](http://us3.php.net/manual/en/function.implode.php ) '$ new_array = implode("、 "$ array);' –

+0

'mysql_query(...)やdie(mysql_error())'のようなエラー処理が適切だった場合は、クエリが失敗した理由がわかります。 –

+0

mysql_query()からエラーが出ますか? 'mysql_error()'をチェックしてください。また、 '$ _POST'からの追加は' $ _GET'からの削除にかかります。どちらの場合でも、クエリの前に入力値をエスケープするために 'mysql_real_escape_string()'と呼んだことはありません... –

答えて

1

があなたを送っ任意の助け

$surface = mysql_real_escape_string($_GET['s']); 
    $array = explode(',',$setQuery['Surface']); 
    unset($array[$surface]); 
    $new_array = implode(',',$array); 
    $saveSettings = mysql_query("UPDATE `settings` SET Surface = '$new_array' WHERE id = '1'"); 

感謝間違った道を踏み外す私はdelete方法は読み込みながら、あなたのadd方法は$_POST['s']からの入力を読み込むことも気づか

$new_array = implode(",", $array); 

ここでアクションの正しいコースは、あなたの配列から文字列を構築するために、内蔵implode() PHPを使用することです$_GET['s']から。それが問題であれば、これらの間の一貫性を確認してください。

ただし、どちらの場合でも、mysql_real_escape_string()を呼び出して、SQLインジェクションに対して正しくエスケープする必要があります。これは、配列に追加または削除してimplode()を呼び出すと、SQL文字列に挿入する直前に行うのが最適です。

// All changes add/del made to array already... 
$new_array = implode(",", $array); 
$new_array = mysql_real_escape_string($new_array); 

$saveSettings = mysql_query("UPDATE `settings` SET Surface = '$new_array' WHERE id = '1'"); 
// Use error handling methods: 
if (!$saveSettings) { 
    // Something went wrong 
    echo mysql_error(); 
} 
関連する問題