2017-06-15 114 views
0

我有出现的声音,但是当一个变量是空库MySQLi bind_param UPDATE不是空值工作

$stmtEmploymentDetails = getDB()->prepare(
    'UPDATE EmploymentDetails SET BranchOffice=?, EmploymentDate=?, EmploymentStatus=?, EmploymentType=?, OrdinaryHours=?, JobClassification=?, ManagmentGroupID=? WHERE EmployeeID=?' 
); 

,并结合PARAM不会更新表下面的MySQL查询

$stmtEmploymentDetails->bind_param(
    'ssiiisss', 
    $branchOffice, 
    $employmentDate, 
    $employmentStatus, 
    $employmentType, 
    $ordinaryHours, 
    $jobClassification, 
    $managmentGroupID, 
    $employeeID 
); 

$stmtEmploymentDetails->execute; 

我有也尝试使用COALESCE但值(我假设)为空不为空

$stmtEmploymentDetails = getDB()->prepare(
    'UPDATE EmploymentDetails SET BranchOffice=COALESCE(BranchOffice=?, BranchOffice), EmploymentDate=COALESCE(EmploymentDate=?, EmploymentDate), EmploymentStatus=COALESCE(EmploymentStatus=?, EmploymentStatus), EmploymentType=COALESCE(EmploymentType=?, EmploymentType), OrdinaryHours=COALESCE(OrdinaryHours=?, OrdinaryHours), JobClassification=COALESCE(JobClassification=?, JobClassification), ManagmentGroupID=COALESCE(ManagmentGroupID=?, ManagmentGroupID) WHERE EmployeeID=?' 
); 

同样的方法不工作在一个较小的查询任何问题

$stmtEmployeeProfile = getDB()->prepare(
    'UPDATE EmployeeProfiles SET AKAName=? WHERE EmployeeID=?' 
); 

$stmtEmployeeProfile->bind_param(
    'ss', 
    $AKAName, 
    $employeeID 
); 

$stmtEmployeeProfile->execute(); 

但在查询中的值总是提供。 任何人都知道问题在哪里?

回答

1

你是否在查询周围发布了任何错误报告来查看实际发生了什么?

if ($stmtEmploymentDetails = getDB()->prepare(
'UPDATE EmploymentDetails 
SET BranchOffice=?, EmploymentDate=?, 
EmploymentStatus=?, EmploymentType=?, 
OrdinaryHours=?, 
JobClassification=?, 
ManagmentGroupID=? 
WHERE EmployeeID=?')) { 
    $stmtEmploymentDetails->execute(); 
} else { 
echo "Failed prepare statement" . $this->conn->error . $this->conn->error; 
} 

我希望有一点帮助,当你有这个错误,然后工作。可能是拼写问题,或者您没有对空值进行正确的检查。这样做的方法是一个简单的isset()语句,如。

if (isset($stmtEmplotmentDetails)) { 
// do something 
} else { 
$stmtEmplotmentDetails = 0; // or default value e.g. "N/A" 
} 

也在想从你检查的数据类型是正确的与数据库corrospond,你有你的绑定参数的查询字符串和整数。它们是否与数据库中的数据类型匹配?

+0

如果可能,你可以显示出现的错误? –

+0

刚刚更新了问题以澄清问题。它将在没有警告的情况下执行,但不会更新表格。我会考虑添加一些与“不适用”相关的内容,看看是否能解决问题。 –

+0

如果您没有默认值,它会一直抱怨,只要确保您在每种情况下都有正确的检查,例如空,空,流行或不正确的值 –