2012-02-29 1 views
1

テーブルの(セッションID)行の特定の値が別の変数と一致する場合にのみ、テーブルにデータを挿入したいと思います。私はINSERT文をまとめるのに苦労しています。私が取っているアプローチ:条件を満たすテーブル内のすべての行を検索し(retailer = $ retailer)、変数オプションをsessionidテーブルに入力する行を反復処理します。制限があるときにPHPを使用してmysqlテーブルに値を入力するにはどうすればよいですか?

$retailer = $_GET['retailer']; 
$options = $_GET['options']; 
$session = session_id(); 

//mysql connection stuff goes here 

$query = " 
SELECT * 
FROM `sessionid` 
WHERE `retailer` = '$retailer' 
"; 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_assoc($result)) { 
     mysql_query("INSERT INTO sessionid (options) VALUES('$options')"); 
    } 

これは正しいですか?ありがとう!

+0

Zend Frameworkを使用してDBクエリを抽象化するか、少なくとも$ optionsと小売業者をhttp://php.net/manual/en/function.mysql-realでエスケープすることを検討してください-escape-string.phpまたは誰もが簡単なSQLインジェクションでデータベースを削除できます。 – Marc

+0

insertは新しいレコード用、updateは既存の行用 –

答えて

1

代わりにUPDATEコマンドを探していますか?ところで

UPDATE sessionid 
SET  options = $options 
WHERE retailer = $retailer 

それがデータベースに$_GET値をプッシュするよりも安全だとして、私はPDOを使用してになります。

$db = new PDO('mysql:host=localhost;dbname=MYDATABASE', 'username', 'password'); 

$db->prepare('UPDATE sessionid SET options = ? WHERE retailer = ?'); 

$db->execute(array($options, $retailer)); 
0

これを行うには、mysqlのWHERE句を使用できます。既存の行を変更する場合、実際にはINSERTではなくUPDATEが必要です。

UPDATE sessionid SET options=$options where retailer = $retailer 
関連する問題