如果变量少于几个字符,则PHP / MySQL仅更新

时间:2015-06-22 20:56:27

标签: php mysql

我已经运行了更新查询,以便可以更新数据库中的事件。

例如,事件记录表:

table from mysql

现在,当我想编辑记录时,我从一个导入所有当前数据并在网页上显示,以便用户可以编辑数据,如下所示:

page with prefilled info

但是,如果我提交该页面并且事件描述长度超过几个字符,则根本不会更新。这是我的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        
    }

2 个答案:

答案 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)

两件事。

  1. 转发用户提供的数据,以处理任何报价。
  2. 确保您尝试更新的数据库字段有足够的长度。
  3. 同样值得跳过整个POST并使用硬编码值进行更新以查看发生的情况。