私はQuestion
というPHPクラスを持っています。 Question
の内部は、$q_id
と呼ばれるパブリック変数です。isset呼び出しが最後の変数値を取得する
class Question{
public $url;
public $q_id;
function __construct(){
global $db;
$this->url = $_GET["url"];
$result = $db->query("SELECT q_id FROM wyr_questions WHERE `url` = '$this->url'");
if ($result->num_rows == 0){
header('Location: 404');
die();
}
else{
$row = $result->fetch_array();
$this->q_id = $row["q_id"];
}
}
$user = new Question();
ここでは2つのボタン、嫌いなボタンなどがあります。ユーザーが好きなボタンまたは嫌いなボタンを押すと、$_POST
メソッドが呼び出されます。 isset
メソッドは、クラスの外で$user
オブジェクトの下にあります。
if (isset($_POST["like"])){
$q_id = $user->q_id;
if ($_POST["like"] == 1){
$db->query("UPDATE wyr_questions SET thumbs_up = thumbs_up + 1 WHERE `q_id` = '$user->q_id'");
}
else{
$db->query("UPDATE wyr_questions SET thumbs_down = thumbs_down+1 WHERE `q_id` = '$q_id'");
}
}
は今、私のようなボタンをクリックするたびに、同類の数が最後q_id
が何であったかに基づいて更新されます。たとえば、のは、私がq_id: 29
が好きで、それが現在のq_id
以前q_id
を更新していないなぜ、isset($_POST["like"])
でのクエリはq_id: 29
なくq_id: 30
のために同類の数を更新しますq_id: 30
を好きに移動しましょうか?
は、SQLインジェクションを防ぐために、[プリペアドステートメント](http://php.net/manual/en/pdo.prepared-statements.php)を使用する必要があります。) –