我是初学者。我有一个更新字段,我只有2个字段是强制性的。但是,当我更新所有其他领域更新为空数据库中的空白。有没有办法只提交SQL中的非空字段,或者我必须验证每个字段并为每个字段写一个if(!empty())大小写和不同的sql语句吗?如何仅向PHP提交非空var到sql数据库?
This is my query after correcting
<?php
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "");
define("DB_DATABASE", "testingtimelines");
$connect = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
if(isset($_POST['submit'])){
$TA = $_POST['tharea'];
$Brand = $_POST['brand'];
$JobType = $_POST['jobtype'];
$DevLead = $_POST['devlead'];
$OnsiteDPM = $_POST['OnsiteDPM'];
$ISDAY0 = $_POST['isday0'];
$VeevaNo = $_POST['VeevaNo'];
$SiteName = $_POST['sitename'];
$SiteType = $_POST['sitetype'];
$AuthorURL = $_POST['authorurl'];
$BFWURL = $_POST['bfwurl'];
$Target = $_POST['target'];
$Complexity = $_POST['complexity'];
$Developer = $_POST['Developer'];
$PlannedStartDate = $_POST['plandate'];
$PlannedActivity = $_POST['plannedactivity'];
$TR = $_POST['ingredients'];
$TestingResource = implode(", ",$TR);
$ActualStartDate = $_POST['actualdate'];
$ActivityStatus = $_POST['activitystatus'];
$ActualClosureDate = $_POST['closedate'];
$Comments = $_POST['Comments'];
$PlannedEndDate = $_POST['enddate'];
$sql = $connect->prepare("UPDATE `testingdashboard` SET `TA`=IF(`TA`='',?,`TA`),
`Brand`=IF(`Brand`='',?,`Brand`),
`JobType`=IF(`JobType`='',?,`JobType`),
`DevLead`=IF(`DevLead`='',?,`DevLead`),
`OnsiteDPM`=IF(`OnsiteDPM`='',?,`OnsiteDPM`),
`ISDAY0`=IF(`ISDAY0`='',?,`ISDAY0`),
`SiteName`=IF(`SiteName`='',?,`SiteName`),
`SiteType`=IF(`SiteType`='',?,`SiteType`),
`AuthorURL`=IF(`AuthorURL`='',?,`AuthorURL`),
`BFWURL`=IF(`BFWURL`='',?,`BFWURL`),
`Target`=IF(`Target`='',?,`Target`),
`Complexity`=IF(`Complexity`='',?,`Complexity`),
`Developer`=IF(`Developer`='',?,`Developer`),
`PlannedStartDate`=IF(`PlannedStartDate`='',?,`PlannedStartDate`),
`TestingResource`=IF(`TestingResource`='',?,`TestingResource`),
`ActualStartDate`=IF(`ActualStartDate`='',?,`ActualStartDate`),
`ActivityStatus`=IF(`ActivityStatus`='',?,`ActivityStatus`),
`ActualClosureDate`=IF(`ActualClosureDate`='',?,`ActualClosureDate`),
`Comments`=IF(`Comments`='',?,`Comments`),
`PlannedEndDate`=IF(`PlannedEndDate`='',?,`PlannedEndDate`),
WHERE `VeevaNo`='$VeevaNo' AND `PlannedActivity`='$PlannedActivity'");
$sql->bind_param("ssssssssssssssssssss", $TA, $Brand, $JobType, $DevLead, $OnsiteDPM, $ISDAY0, $SiteName, $SiteType, $AuthorURL, $BFWURL, $Target, $Complexity, $Developer, $PlannedStartDate, $TestingResource, $ActualStartDate, $ActivityStatus, $ActualClosureDate, $Comments, $PlannedEndDate);
$sql->execute();
if(mysqli_query($connect,$sql)){
//header("localhost/testing/list.php");
echo "success";
$sql->close();
header('location:new.php');
}
?>
但现在我得到“未定义指数”的错误和“致命错误:未捕获的错误:调用一个成员函数bind_param()”
通过empty()
谢谢
通过使用更新的值 –
您是要添加的所有新数据到你的数据库表的数组或者是你真的更新旧的数据? – Sand
更新旧数据。例如,我已经填写了所有必填字段,以免剩余空白,现在我试图更新这些剩余字段 – Andruraj