未使用 PHP 保存在 MYSQL 中的值 [重复]

Posted

技术标签:

【中文标题】未使用 PHP 保存在 MYSQL 中的值 [重复]【英文标题】:Values not saving in the MYSQL using PHP [duplicate] 【发布时间】:2017-02-20 18:24:05 【问题描述】:

我正在尝试使用 php 将 utm 参数和其他值保存在 mysql 中,但是这些值没有保存在数据库中。

我已经回显了每个变量并且值都存在。查询有什么问题?为什么值没有保存在数据库中?

以及如何插入日期?我的意思是,我想在插入值时插入/保存日期。

if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != "")
    $customer_fname = isset($_POST['customer_fname']) ? $_POST['customer_fname'] : '';
    $customer_sname = isset($_POST['customer_sname']) ? $_POST['customer_sname'] : '';
    $customer_email = isset($_POST['customer_email']) ? $_POST['customer_email'] : '';
    $customer_mobile = isset($_POST['customer_mobile']) ? $_POST['customer_mobile'] : '';
    $utm_source = isset($_GET['utm_source']) ? $_GET['utm_source'] : '';
    $utm_medium = isset($_GET['utm_medium']) ? $_GET['utm_medium'] : '';
    $utm_campaign = isset($_GET['utm_campaign']) ? $_GET['utm_campaign'] : '';
    $utm_content = isset($_GET['utm_content']) ? $_GET['utm_content'] : '';
    $referer_url = $_SERVER['HTTP_REFERER'];
    $base_url = preg_replace('/\?.*/', '', $_SERVER['HTTP_REFERER']);

    $sql = "INSERT INTO utm_param(customer_fname,customer_sname,
                                                   customer_email,customer_mobile,
                                                   utm_source,utm_medium,
                                                   utm_campaign,utm_content,
                                                   referer_url,base_url,date_inserted)
            VALUES('".$conn->real_escape_string($customer_fname)."',
                   '".$conn->real_escape_string($customer_sname)."',
                   '".$conn->real_escape_string($customer_email)."',
                   '".$conn->real_escape_string($customer_mobile)."',
                   '".$conn->real_escape_string($utm_source)."',
                   '".$conn->real_escape_string($utm_medium)."',
                   '".$conn->real_escape_string($utm_campaign)."',
                   '".$conn->real_escape_string($utm_content)."',
                   '".$conn->real_escape_string($referer_url)."',
                   '".$conn->real_escape_string($base_url)."')";

    $result = $conn->query($sql);

    if($result)
        echo "row inserted\n";
     else 
        echo '<br/>aaa';
    

【问题讨论】:

在数据库编辑器上运行查询并检查错误或警告(如果有) $conn 来自哪里?您可以调高调试级别以查看在 ELSE 上发生的错误。例如$conn->getError();或类似的。您可能还想使用 ini_set('display_errors', 1); error_reporting(E_ALL) 用于开发... 上面代码中的日期字段是哪一个... @VeshrajJoshi,我还没有输入日期字段,因为我不知道在插入其他值时如何插入 您可以添加字段名称和值,否则将默认值设置为数据库中的列 【参考方案1】:

在查询中,您错过了 date_inserted 值。如果它必须是“NOT NULL”,则查询将失败。

要在数据库中插入日期,建议您查看此链接:PHP date() format when inserting into datetime in MySQL。

因此,按照上面的链接,要保存插入值的日期,您必须执行以下操作:

// set the value
$date_inserted = date("Y-m-d H:i:s");

//insert the values
$sql = "INSERT INTO utm_param(
    customer_fname,
    customer_sname,
    customer_email,
    customer_mobile,
    utm_source,
    utm_medium,
    utm_campaign,
    utm_content,
    referer_url,
    base_url,
    date_inserted
) VALUES(
    '".$conn->real_escape_string($customer_fname)."',
    '".$conn->real_escape_string($customer_sname)."',
    '".$conn->real_escape_string($customer_email)."',
    '".$conn->real_escape_string($customer_mobile)."',
    '".$conn->real_escape_string($utm_source)."',
    '".$conn->real_escape_string($utm_medium)."',
    '".$conn->real_escape_string($utm_campaign)."',
    '".$conn->real_escape_string($utm_content)."',
    '".$conn->real_escape_string($referer_url)."',
    '".$conn->real_escape_string($base_url)."',
    '".$date_inserted."'
);"; 

希望对你有帮助。

【讨论】:

但是如何保存自动插入的日期?我的意思是,我想保存插入值时插入的日期 @User014019 我编辑了答案以插入当前日期时间(实际上是插入值时的日期时间)。此外,您的date_inserted MySQL 字段必须是“DATETIME”类型。 它正在工作。谢谢!

以上是关于未使用 PHP 保存在 MYSQL 中的值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将html表单中的数据插入sql数据库(html,php,sql)时未保存输入的值

Mysql - 数据库连接 - xampp - 使用 PHP [重复]

XAMPP:mySQL 未连接 [重复]

HTML / PHP表单未发布(MYSQL)[重复]

xampp 未显示保存在 htdocs 文件夹中的 .php 文件

使用php保存html表单时出现错误未定义变量和所有值在sql db中保存为0 [重复]