mysqli 字符串中的变量问题

variable issue in mysqli string

这是代码

if($_POST['submit']) {

$rid = $_GET['rid'];
$award = $_GET['award'];
$award_id = $_GET['award_id'];
$member_id = $_GET['member_id'];

$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_requests SET maa_status = '3' WHERE maa_request_id = '$rid'");
$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_members SET '".$award."' = '1' WHERE maa_member_id = '$member_id'");

问题出在这一行

$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_members SET '".$award."' = '1' WHERE maa_member_id = '$member_id'");

准确来说SET '".$award."' = '1'

'".$award."' 是一个列名和一个变量,其他一切正常,但这部分代码没有更新。

我需要知道的是如何让变量在这个 mysqli 字符串中工作。

"column name would be Testing Award"

您必须将该列名称包含在刻度中

SET `$award` = '1'

并且不在引号中,因为它包含 space.

MySQL 应该给您抛出一个语法错误:(请参阅下面的错误检查方法)。

要么,要么重命名您的列以包含下划线。

即:Testing_Award.

不要使用连字符,因为 MySQL 会将 Testing-Award 解释为 Testing minus Award,导致语法错误,除非使用反引号。

你还应该使用准备好的语句:

您对 SQL 注入持开放态度。


错误检查方法:

示例:

$res = $mysqli->query($result);

if ($mysqli->error) {
    try {    
        throw new Exception("MySQL error $mysqli->error <br> Query:<br> $query", $mysqli->errno);    
    } catch(Exception $e ) {
        echo "Error No: ".$e->getCode(). " - ". $e->getMessage() . "<br >";
        echo nl2br($e->getTraceAsString());
    }
}

或:

$result = mysqli_query($mysqli, $result);

if (!$result)
{
    throw new Exception(mysqli_error($mysqli));
}

else{ echo "Success."; }

理想情况下,如果查询真正成功,使用 mysqli_affected_rows() 会给你一个更好的结果。