【问题标题】:Trying to UPDATE SQL DATE column via HTML form; Is this even possible? [duplicate]尝试通过 HTML 表单更新 SQL DATE 列;这甚至可能吗? [复制]
【发布时间】:2019-09-08 22:31:10
【问题描述】:

当我运行这个脚本时,strtotimedate 函数工作,但是当 SQL 查询运行时,数据库中的日期列保持空白。

$date = mysqli_real_escape_string($conn, $_POST['date']);
    $day1 = strtotime($date);
    $day1 = date('Y-m-d', $day1);
    $id = 1;
    echo $day2;

    $sql = "UPDATE essay SET date = $day1 WHERE id = $id";

【问题讨论】:

标签: php sql date


【解决方案1】:

除非 SQL 字段是整数类型或类似的数字类型,否则写入其中的数据应在插入语句中引用。在这种情况下,您的 $day1 类似于“2019-04-18”,因此您的 SQL 应为:

$sql = "UPDATE essay set date = '$day1' where id = $id";

单引号应该允许查询成功。请注意,调试这类事情相当容易,但在某些教程中没有教授;如果查询失败,请尝试记录或回显 MySQL(i) 错误:

$query = $db->query($sql);
if (!$query) echo $db->error;

【讨论】:

  • 我们不要教授/传播草率和危险的编码实践。如果您发布没有准备好的陈述的答案you may want to consider this before posting。另外a more valuable answer comes from showing the OP the right method.
  • 我今天有点偏离中心,所以我会道歉。那是不必要的,你是对的。我仍然不会给他写一本关于编写整个应用程序的正确方法的书,这个问题有一个适用的三字答案,例如“引用变量”。
  • 不一定是大学。您可以像以前一样回答问题,然后建议他们将参数化查询视为“更好的做法”,并可能提供信息链接。我们只是希望人们学习如何安全地编写 PHP。
  • 我同意我们希望人们编写安全的程序,但 OP 显然仍处于 PHP 使用的一个非常基本的阶段,所以我认为最好解决简单的问题而不是完整传教士模式。
  • 我对此的唯一反驳是——他们应该从一开始就正确学习,否则他们将不得不回去改掉坏习惯。
【解决方案2】:

您必须像这样在 $day1 上添加报价:

$sql = "UPDATE essay SET date = '$day1' WHERE id = '$id'";

另一种连接方式:

$sql = "UPDATE essay SET date = ".$day1." WHERE id = ".$id;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多