MySQL查询与PHP变量问题

时间:2014-04-23 18:34:13

标签: php mysql sql

我已经搜索了stackoverflow等寻找答案的东西,似乎没有什么对我有用。我没有在/ var / log / apache2 / error_log中收到任何错误,所以它似乎在语法上是正确的。

我正在制作一个功能页面,它将从输入表单中获取数据,并根据用户填写的要更新的内容将其插入数据库。当我在mysql CLI上运行查询时它会更新它,但是当我运行它时它在页面中不起作用。

我设置了多个查询,并且它们仅根据信息填写的情况运行,这是一个示例,好像用户想要更新他们的名字一样。

在顶部,这恰好将人们输入的单词变为PHP变量,

$first_name = htmlentities($_POST["first"], ENT_QUOTES);

它还可以通过以下方式从登录信息中获取此人的用户ID:

$user_id = $_SESSION['login_info']['user_id'];

然后在此之后它会检查实体是否为空,如果不是,则运行查询。

if ($first_name != "") {
    $result = $dbact->interact("UPDATE person SET first_name = ".$first_name." WHERE idperson = ".$user_id, true);
}

$ result是存储查询的输出,因为我正在调用我的交互功能,如下所示:

public function interact($query,$resultVal) {
    $db = new mysqli("localhost","username","password","calendar");

    if ($db->connect_errno) {
        echo "Failed to connect to MySQL: (" . $db->connect_errno . ") " . $db->connect_error;
    }

    if(!$db) {
        echo "Error: Could not acces database in mySQL";
        exit;
    }

    //Running the query and returning the result based on $resultVal
    if($resultVal) {
        $result = $db->query($query);

        return $result;
    }

    else {
        $db->query($query);
    }
}

它必须是我的语法,我连接错误的东西?它可能只是我忽略的东西,但我很想得到输入。

谢谢大家的时间。

1 个答案:

答案 0 :(得分:1)

您的字符串值缺少引号:

$result = $dbact->interact("UPDATE person SET first_name = ".$first_name." WHERE idperson = ".$user_id, true);
                                                         ^^^^^^^^^^^^^^^^^^^
                                                                HERE

应该是:

$result = $dbact->interact("UPDATE person SET first_name = '".$first_name."' WHERE idperson = ".$user_id, true);

仅供参考,htmlentities() 保护您免受SQL注入。您的代码容易受到攻击。