我已经搜索了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);
}
}
它必须是我的语法,我连接错误的东西?它可能只是我忽略的东西,但我很想得到输入。
谢谢大家的时间。
答案 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注入。您的代码容易受到攻击。