我已经运行了更新查询,以便可以更新数据库中的事件。
例如,事件记录表:
现在,当我想编辑记录时,我从一个导入所有当前数据并在网页上显示,以便用户可以编辑数据,如下所示:
但是,如果我提交该页面并且事件描述长度超过几个字符,则根本不会更新。这是我的PHP / MySQL代码:
$event_title=$_POST['event_title'];
$event_desc=$_POST['event_desc'];
$event_date_start = $_POST['event_date_start'];
$event_date_end = $_POST['event_date_end'];
$db = mysql_select_db("millyaca_events", $connection);
mysql_query("UPDATE events set event_title='$event_title', event_desc='$event_desc', event_date_start='$event_date_start', event_date_end='$event_date_end' where unique_ID='$ID'", $connection);
只是刚刚开始学习PHP和MySQL,如果这是一个非常愚蠢的错误,请道歉。
以下是完整的提交按钮脚本:
if (isset($_POST['submit'])) {
$ID = $_GET['ID'];
$event_title=$_POST['event_title'];
$event_desc=$_POST['event_desc'];
$event_date_start = $_POST['event_date_start'];
$event_date_end = $_POST['event_date_end'];
// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$connection = mysql_connect("localhost", "removed username", "removed password");
// Selecting Database
$db = mysql_select_db("millyaca_events", $connection);
// SQL query to fetch information of registerd users and finds user match.
mysql_query("UPDATE events set event_title='$event_title', event_desc='$event_desc', event_date_start='$event_date_start', event_date_end='$event_date_end' where unique_ID='$ID'", $connection);
mysql_close($connection); // Closing Connection
header("location: https://www.millyacademy.com/admin-zone/events_management/"); // Redirecting To Other Page
}
答案 0 :(得分:2)
从我们调试过的评论到传递给查询的数据中的撇号/引用。要使用当前的数据库驱动程序解决此问题,请使用mysql_real_escape_string,http://php.net/manual/en/function.mysql-real-escape-string.php。
您将来应该切换到MySQLi或PDO并使用预准备语句。
这是使用当前代码的功能用法(未经测试,可能不起作用?)。
if (isset($_POST['submit'])) {
$ID = (int)$_GET['ID']; //force this to an int, or you could also escape
$event_title= mysql_real_escape_string($_POST['event_title']);
$event_desc= mysql_real_escape_string($_POST['event_desc']);
$event_date_start = mysql_real_escape_string($_POST['event_date_start']);
$event_date_end = mysql_real_escape_string($_POST['event_date_end']);
// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$connection = mysql_connect("localhost", "removed username", "removed password");
// Selecting Database
$db = mysql_select_db("millyaca_events", $connection);
// SQL query to fetch information of registerd users and finds user match.
mysql_query("UPDATE events set event_title='$event_title', event_desc='$event_desc', event_date_start='$event_date_start', event_date_end='$event_date_end' where unique_ID='$ID'", $connection);
mysql_close($connection); // Closing Connection
header("location: https://www.millyacademy.com/admin-zone/events_management/"); // Redirecting To Other Page
}
最好永远不要将用户数据直接传递给您的查询。
答案 1 :(得分:0)
两件事。
同样值得跳过整个POST并使用硬编码值进行更新以查看发生的情况。