我有一个名为Question
的PHP类。内部Question
是一个名为$q_id
的公共变量。
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: 30
,然后isset($_POST["like"])
中的查询将更新q_id: 29
而不是q_id: 30
的相似数量{1}}为什么要更新之前的q_id
而不是当前的q_id
?
答案 0 :(得分:0)
只需移动您的代码
$user = new Question();
类似的东西:
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"];
}
}
if (isset($_POST["like"])){
$user = new Question(); //here is the new position of this code
$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'");
}
}