Php 如果用户选择不上传文件,则在mySQL中插入空值

Php 如果用户选择不上传文件,则在mySQL中插入空值,php,mysql,sql,upload,Php,Mysql,Sql,Upload,我的网站上的用户可以选择上传一些不同的文件。代码上载文件并将指向该文件的链接保存到mySQL数据库中 如果用户没有选择要上载的文件,我将尝试在sql数据库中插入空值 下面的代码只输入一个空值,不管a是否选择了要上载的文件。。。请帮忙。(位置变量在代码的前面已经建立,并且工作正常) 这是我的密码: if (is_null($_POST['imgfile'])) { $imglink = NULL; } else { $imglink = mysql_real_escape_string($imgl

我的网站上的用户可以选择上传一些不同的文件。代码上载文件并将指向该文件的链接保存到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);
}
  • 您确定用户选择的文件在$\u POST中可用-而不是在$\u文件中可用吗

  • 您可以只允许NULL,并在存储图像和视频文件链接的表的db字段(使用default NULL子句)中设置默认值,因此在没有这些值的表中插入新记录时,会自动将它们设置为NULL


  • 只需传入一个空字符串(即,
    $vidlink='';
    )。这不就是“code”$vidlink=null;”吗代码'?否。PHP null!=MySQL null。你能发布你的查询吗?然后我们可以帮助你。为了保持简单,我删去了一些内容,但我把查询添加到了我的问题中。那有用吗。有道理,我忘了。我用更改对其进行了测试,但它仍然为链接输入了空值,即使用户选择了要上载的文件。为了安全起见,该代码重命名上载的文件,并且在重命名时,如果用户没有选择要上载的文件,它会插入一个没有扩展名的文件名。因此,问题是,如果有人单击指向该无扩展名文件的链接,用户将进入404重定向页面。如果用户没有选择一个文件,我希望它插入一个空值,但是如果用户选择了,则将链接发布到该文件。这有意义吗@维克多·利瓦基夫斯基一号向我透露了解决方案。上传文件的输入以数组的形式发布到php,因此我的原始代码将数组视为一个输入值。我需要识别数组中的一个值,并针对该值运行if/then,以使其正常工作。谢谢,@viktor livakivskyi。由于我不熟悉堆栈溢出,无法发布我自己问题的答案,我将用下面的正确代码编辑我的原始问题。@AaronB。不客气!有时解决方案位于不同的范围:)