-2

重複の可能性:
PHPでSQLインジェクションを防ぐ方法は?

次のMySQLクエリがあります:

if($obj->{'parentId'} == null){
    $parentID = 'NULL'; 
} else{
    $parentID = $obj->{'parentId'};
}

$q = 'UPDATE tasks SET 
    Name = "'.$obj->{'Name'}.'", 
    Cls = "'.$obj->{'Cls'}.'", 
    parentId = '.$parentID.', 
    PhantomId = '.$obj->{'PhantomId'}.', 
    PhantomParentId = '.$obj->{'PhantomParentId'}.', 
    leaf = "'.$leaf.'" WHERE Id = "'.$obj->{'Id'}.'"';

問題は、文字列以外の値のいずれかが空の場合、クエリ全体がエラーをスローすることです。$obj->{'PhantomId'}たとえば、追加のライブラリがなくても空の場合にクラッシュする問題を修正するにはどうすればよいですか?

4

1 に答える 1

3

バインドされたパラメーターをオプトアウトすることを検討することをお勧めします。ただし、それでもSQLクエリを作成する場合は、条件を使用します

$q = "UPDATE ...";
...
if (!empty($obj->{'PhantomId'})) {
    $q .= ", PhantomId = '" . $obj->{'PhantomId'}. "'";
}
...
于 2013-01-15T02:10:24.303 に答える