我使用php从表单字段中获取变量:
$url=$_POST['url'];
$tags=$_POST['tags'];
$skillArea=$_POST['skill_area'];
$description=$_POST['description'];
$slideshowImageFileName=($_FILES['imageNameSlideshow']['name']);
但是当我运行我的sql insert查询时,如果其中一个变量是空的,我会收到一个错误,所以我已经开始编写if语句来处理这个以重写查询字符串,但当然,这就是' s不是答案?这看起来很混乱
if(empty($slideshowImageFileName)){
$query1="INSERT INTO portfolio (item_name,image_path,description,url) VALUES('$itemName','$imageFileName','$description','$url')";
}else{
$query1="INSERT INTO portfolio (item_name,image_path,description,url,slideshow_image_path) VALUES('$itemName','$imageFileName','$description','$url','$slideshowImageFileName')";
}
答案 0 :(得分:2)
我想你正在寻找这样的东西:
$slideshowImageFileName = (isset($_FILES['imageNameSlideshow']['name']) && !empty($_FILES['imageNameSlideshow']['name'])) ? $_FILES['imageNameSlideshow']['name'] : NULL;
这将检查幻灯片图像的名称是否已设置且不为空。如果为NULL,则将为该变量分配,如果其值正确,则将分配该值。
如果要添加空字符串,可以用“”替换NULL。
答案 1 :(得分:0)
尝试将$ slideshowImageFileName的值设置为空字符串或数据库表将接受的单个空格,并始终使用第二个查询。
if(empty($slideshowImageFileName)){
$slideshowImageFileName = "";
}
$query1="INSERT INTO portfolio (item_name,image_path,description,url,slideshow_image_path) VALUES('$itemName','$imageFileName','$description','$url','$slideshowImageFileName')";
答案 2 :(得分:0)
这有几个选择。
最简单的方法是确保变量始终设置,即使没有通过:
//Set up your database connection as normal, check errors etc.
$db = mysqli_connect($host,$user,$password,$db);
$url = isset($_POST['url']) ? mysqli_real_escape_string($db, $_POST['url']) : "";
$tags= isset($_POST['tags']) ? mysqli_real_escape_string($db, $_POST['tags']) : "";
转义数据是一种很好的做法:)在INSERT查询中,您仍然需要将值包装在引号中,或者您可以根据自己的喜好在上面的代码中执行此操作。
答案 3 :(得分:0)
我同意雷先生的意见。但除此之外还有另一种解决方案。表上的slideshow_image_path字段可能不允许为null。因此,您可以通过允许null来更改属性,它将起作用。
答案 4 :(得分:0)
如果我确定我会获得大量可选数据,我可能会构建一个构建器。
像这样:
$acceptedKeys = array
('item_name',
'image_path',
'description',
'url',
'slideshow_image_path');
$inserts = array();
foreach($_GET as $key => $var) {
if(in_array($key, $acceptedKeys)) {
// clean and validate your keys here!
$inserts[$key] = $var;
}
}
$customKeys = implode(array_keys($inserts), ',');
$customValues = implode($inserts, ',');
$query = "INSERT INTO portfolio ($customKeys) VALUES($customValues)";