遵循以下语法:
这是用于将数据修改为MySQL表的save
命令的通用SQL语法 -
UPDATE
来自https://www.tutorialspoint.com/mysqli/mysqli_update_query.htm
我做到了:
UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
但是在线:
$query = mysqli_query($MYSQL_CONNECT, "UPDATE forum_topics SET player_userid = ".$player_userid.", titulo = ".$titulo.", msg = ".$msg.", data = ".$data." WHERE UserID=".$inTopic."");
mysqli_query($MYSQL_CONNECT,$query);
显示:
mysqli_query():第30行/var/www/html/ucp/php_func/edit_topic.php中的空查询
答案 0 :(得分:1)
主要问题是您尝试执行两次的查询。第二次尝试无效,因为在需要字符串查询的地方,你要么传递一个结果对象,要么传递一个布尔值(如果第一个查询失败)。
只需执行一次:
的查询$query = mysqli_query($MYSQL_CONNECT, "...");
然后$query
中的值就是结果。
另外,您遇到的问题是您的代码对SQL injection开放,而且您没有检查错误。如果mysqli_query()
返回false
,您需要使用mysqli_error($MYSQL_CONNECT)
来检查出现了什么问题,set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS on)
会将错误作为字符串返回。
对于SQL注入问题,您应该做的是将值视为值(查询参数)而不是可执行代码(通过将它们直接连接到查询中)。 This is a great place to learn more about that.请注意,SQL注入不仅仅是一个安全问题,而且也是错误和错误的常见来源。由于您目前确实遇到了这个问题,因此值得纠正。
答案 1 :(得分:-1)
你应该用单引号包装你的变量,试试:
$query = mysqli_query($MYSQL_CONNECT, "UPDATE forum_topics SET player_userid = '".$player_userid."', titulo = '".$titulo."', msg = '".$msg."', data = '".$data."' WHERE UserID='".$inTopic."'");