【问题标题】:Why data failed to save to MySQL from URL parameter value?为什么数据无法从 URL 参数值保存到 MySQL?
【发布时间】:2017-10-04 06:17:09
【问题描述】:

我无法弄清楚为什么值中的参数没有保存在 MySQL 数据库中。我的连接字符串正在工作(config.php)。但是在 MySQL 数据库上,它是 000-00-00 或 0.000000 数据没有保存。你认为这里的问题是什么?

这是我的网址参数http://crbphil-001-site1.1tempurl.com/adddata.php? addday=2017/10/04&addhour=01:31:00&addlati=14.779623&addlongti=120.993705

adddata.php

<?php 
//Connect to MySQL
include("config.php");
//Prepare Query
$query = "INSERT INTO track (tr_date, tr_time, latitude, longitude) VALUES ('".urlencode($_GET["addday"])."','".urlencode($_GET["addhour"])."','".urlencode($_GET["addlati"])."','".urlencode($_GET["addlongti"])."')";

//Execute Query
mysqli_query($connect, $query);
?>

config.php

<?php 
$username = "a2a8e2_itrack";  //mysql username
$password = "******"; //mysql password
$servername="mysql****.hostbuddy.com";
$dbname = "db_a2a8e2_itrack";

$connect = mysqli_connect($servername, $username, $password, $dbname);
$selected = mysqli_select_db($connect, $dbname);
?>

【问题讨论】:

  • 使用参数分享您的示例网址
  • 如果您删除 urlencode 并尝试解码或编码会怎样?
  • 这是 SQL,不是 URL……urlencode 不合适。
  • 你永远不会看mysqli_query的返回值。您永远不会使用mysqli_error 检查数据库错误。如果您甚至不寻找它,我们怎么知道问题是什么?
  • urlencode($_GET["addday"]) 将输出为2017%2F10%2F04。而且,表格列不能取这个值,因为数据类型是日期类型。您必须先将其转换为日期格式。

标签: php mysql database url mysqli


【解决方案1】:

您正在使用urlencode,它正在更改数据的格式。 例如,您传递 addday=2017/10/04 BUT urlencode($_GET["addday"]2017%2F10%2F04

只需删除 urlencode 并仅使用 $_GET

所以你的插入查询变成了这样:

$query = "INSERT INTO track (tr_date, tr_time, latitude, longitude)
          VALUES ('".$_GET["addday"]."', '".$_GET["addhour"]."', '".$_GET["addlati"]."', '".$_GET["addlongti"]."')";

【讨论】:

  • 您不应该在答案中提供对 SQL 注入友好的代码块
猜你喜欢
  • 2019-08-04
  • 2021-10-26
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多