【问题标题】:Inserting NULL value into mySQL if the user chose not to upload a file如果用户选择不上传文件,则将 NULL 值插入 mySQL
【发布时间】:2013-01-30 21:03:45
【问题描述】:

我网站上的用户可以选择上传几个不同的文件。代码上传文件并将指向该文件的链接保存在 mySQL 数据库中。

如果用户没有选择要上传的文件,我会尝试在我的 sql 数据库中插入一个空值。

下面的代码只是输入一个空值,不管a是否选择了要上传的文件……请帮忙。 (位置变量在代码中较早建立并且工作正常)

这是我的代码:

if (is_null($_POST['imgfile'])) {
$imglink = NULL;
} else {
$imglink = mysql_real_escape_string($imglocation);
}
if (is_null($_POST['vidfile'])) {
$vidlink = NULL;
} else {
$vidlink = mysql_real_escape_string($vidlocation);
}

$sql="INSERT INTO db (imgfile, vidfile)
VALUES(
'$imglink',
'$vidlink')";

正确代码:

if (empty($_FILES['imgfile']['name'])) {
$imglink = '';
} else {
$imglink = mysql_real_escape_string($imglocation);
}
if (empty($_FILES['vidfile']['name'])) {
$vidlink = '';
} else {
$vidlink = mysql_real_escape_string($vidlocation);
}

【问题讨论】:

  • 只需传入一个空字符串(即$vidlink = '';)。
  • 不是和'code'$vidlink = NULL;'code' ... 一样吗?
  • 没有。 PHP null != MySQL null。
  • 您可以发布您的查询,然后我们可以帮助您
  • 为了简单起见,我已经删减了一些内容,但我将查询添加到我的问题中。这有帮助吗?

标签: php mysql sql upload


【解决方案1】:
  1. 您确定用户选择的文件在 $_POST 中可用 - 而不是在 $_FILES 中?

  2. 您可以只允许 NULL 并在存储图像和视频文件链接的表的数据库字段(使用 DEFAULT NULL 子句)中将它们设为默认值 - 因此在没有这些值的表,会自动将它们设置为 NULL。

【讨论】:

  • 1.有道理,脑补了。我使用更改对其进行了测试,但即使用户选择要上传的文件,它仍会为链接输入空值。
  • 2.该代码为安全起见重命名上传的文件,并且在重命名时,如果用户没有选择要上传的文件,它会为不带扩展名的文件插入一个名称。所以问题是,如果有人点击该无扩展名文件的链接,用户最终会进入 404 重定向页面。如果用户没有选择文件,我希望它插入一个空值,但如果他们选择了,则发布指向它的链接。那有意义吗? @viktor-livakivskyi
  • NUMBER 1 告诉我解决方案。上传文件的输入以数组形式发布到 php,因此我的原始代码将数组视为一个输入值。我需要在数组中识别一个值并针对它运行 if/then 以使其正常工作。谢谢,@viktor-livakivskyi。由于我是 Stack Overflow 的新手,无法发布自己的问题的答案,因此我将使用下面的正确代码编辑我的原始问题。
  • @AaronB。不客气!有时解决方案位于不同的范围内:)
猜你喜欢
  • 2015-08-17
  • 2018-04-13
  • 2016-05-24
  • 2012-06-07
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 2012-10-03
  • 2015-09-16
相关资源
最近更新 更多