带有PHP变量的MySQL查询问题
我已经搜遍了像stackoverflow这样的人,寻找答案,但似乎什么都不适合我。我在/var/log/apache2/error\u日志中没有发现任何错误,因此它在语法上似乎是正确的 我正在制作一个功能页面,它将从输入表单中获取数据,并根据用户填写的内容将其插入数据库中进行更新。当我在mysql CLI上运行查询时,它会很好地更新它,但当我运行它时,它在页面中无法工作 我设置了多个查询,它们只根据信息是否已填写来运行,下面是一个示例,好像用户想要更新他们的名字 在顶部,这恰好将用户输入的单词转换为PHP变量带有PHP变量的MySQL查询问题,php,mysql,sql,Php,Mysql,Sql,我已经搜遍了像stackoverflow这样的人,寻找答案,但似乎什么都不适合我。我在/var/log/apache2/error\u日志中没有发现任何错误,因此它在语法上似乎是正确的 我正在制作一个功能页面,它将从输入表单中获取数据,并根据用户填写的内容将其插入数据库中进行更新。当我在mysql CLI上运行查询时,它会很好地更新它,但当我运行它时,它在页面中无法工作 我设置了多个查询,它们只根据信息是否已填写来运行,下面是一个示例,好像用户想要更新他们的名字 在顶部,这恰好将用户输入的单词转
$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存储查询的输出,因为我调用的是interact函数,如下所示:
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);
}
}
一定是我的语法有问题,我连接错了吗?这可能只是我忽略了一些事情,但我很想得到一些意见
感谢大家抽出时间。字符串值周围缺少引号:
$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注入的影响。您的代码易受攻击。使用mysqli
时,您应该使用参数化查询,并将用户数据添加到查询中。不要使用字符串连接来实现这一点,因为您在这里创建了一些严重的错误。在这里使用htmlentities
是完全错误的。只有当您在HTML上下文中显示该内容时,例如在页面上,才与此相关。@tadman先生,我将对此进行研究,谢谢您的提示@约翰·康德,谢谢你,我想我忽略了最微小的事情,对吧,我希望有一天我不是人类!