SQLインジェクションのリスクを防ぐには、PDOを使用する必要があります。
次のようにDBに接続できます。
try {
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=xxxx;dbname=xxxx', 'user', 'password', $pdo_options);
$bdd->query('SET NAMES "utf8"');
} catch (PDOException $e) {
exit('Error');
}
ポイント数を取得するためにDBをクエリする必要はありません。更新クエリ(points = points + 1
)で直接インクリメントできます。
(注:また、最初にデータを選択する必要があるため、PHPで値をインクリメントすることはお勧めしません。他のユーザーがデータを更新すると、値が変更される可能性があります。)
$req = $bdd->prepare('UPDATE member_profile SET
points = points + 1
WHERE user_id = :user_id');
$req->execute(array(
'user_id' => $userid
));