2017-06-15 63 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

如果您沒有默認值,它會一直抱怨,只要確保您在每種情況下都有正確的檢查,例如空,空,流行或不正確的值 –