2016-03-22 14 views
-1

このコードをPDOで動作するコードに変換するにはどうすればよいですか?PDOで行を更新するにはどうすればよいですか?

if($_POST['name']=='home_title'){ 
$id=$_POST['pk']; 
$home_title=$_POST['value']; 
$result=mysql_query("SELECT COUNT(*) as count FROM sw_configuration WHERE id=$id") or die(mysql_error()); 
$count= mysql_fetch_row($result); 
if($count[0]==0){ 
    mysql_query("INSERT INTO sw_configuration(id,home_title) VALUES('".$id."','".$home_title."')") or die(mysql_error()); 
}else{ 
    mysql_query("UPDATE sw_configuration SET home_title='".$home_title."' WHERE id=$id") or die(mysql_error()); 
    } 
} 
+2

あなたはまだ何かを試してみましたか? –

+0

あなたの質問に対する答えを受け入れることを検討する必要があります。質問した9つの質問のうち、まだ1つの回答を受け入れていません。あなたと、評判を得た人と、評判を得た人の両方が、あなたのために働くものを将来の訪問者に示します。 – Mike

答えて

1

は単純にPDOを使用すると、SQLインジェクション攻撃からあなたのスクリプトをセキュアにするために十分ではありません。 すべてのユーザ提供変数のが適切にquoted以上であることを確認する必要がありますが、推奨パラメータであるバインドされたパラメータを持つprepared statementを使用してください。これを行わないと、PDOと通常のmysql_*機能の間にセキュリティ上の違いはありません。ここではあなたがそれを行うことができる方法の例です:

$stmt = $dbh->prepare("INSERT INTO sw_configuration(id,home_title) 
    VALUES(:id,:home_title)"); 
$stmt->bindValue(':id', $id); 
$stmt->bindValue(':home_title', $home_title); 
$stmt->execute(); 

それとも、値を選択する必要がある場合:

$stmt = $dbh->prepare("SELECT COUNT(*) 
    FROM sw_configuration WHERE id = :id"); 
$stmt->bindValue(':id', $id); 
$stmt->execute(); 

$count = $stmt->fetchColumn(); 
関連する問題