Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'people.addressId' in 'field list' in A:\xampp\htdocs\brgytoolkit\census2.php:97 Stack trace: #0 A:\xampp\htdocs\brgytoolkit\census2.php(97): PDOStatement->execute() #1 {main} thrown in A:\xampp\htdocs\brgytoolkit\census2.php on line 97
我有這個查詢,它從表單中獲取四個輸入,并從資料庫其余部分中應該存在的列中匯出其他值。但是,即使它確實存在,它似乎也不會讀取people.addressId。該查詢在 MySQL 本身上執行時作業正常。我嘗試在它周圍使用單引號而不是反引號,但也會發生同樣的情況。我也嘗試使用LEFT JOIN但沒有任何變化。
$incomeMonthly = $_POST['incomeMonthly'];
$isIncomeSourceSalary = $_POST['isIncomeSourceSalary'];
$isIncomeSourceBusiness = $_POST['isIncomeSourceBusiness'];
$isIncomeSourceRemittance = $_POST['isIncomeSourceRemittance'];
$sql = "INSERT INTO `households` (`incomeMonthly`, `isIncomeSourceBusiness`, `isIncomeSourceSalary`,`isIncomeSourceRemittance`, `addressId`, `personId`, `householdName`, `householdHeadName`)
SELECT (:a,:b,:c,:d, `people.addressId` , `personId` , `lName` ,`fName`)
FROM `people` INNER JOIN `addresses` ON `people.addressId` = `addresses.addressId`
WHERE `isHeadOfFamily`=1 AND `barangay`='San Jose'";
$stmt = $db->prepare($sql);
$stmt->bindParam(":a", $incomeMonthly);
$stmt->bindParam(":b", $isIncomeSourceBusiness);
$stmt->bindParam(":c", $isIncomeSourceSalary);
$stmt->bindParam(":d", $isIncomeSourceRemittance);
$stmt->execute();
uj5u.com熱心網友回復:
- 反引號
`people.addressId`應該是`people`.`addressId`. 也一樣`addresses`.`addressId`。 - 沒有必要
()在SELECT部分添加括號 [ ]所以SELECT (:a,:b,:c,:d, `people.addressId` , `personId` , `lName` ,`fName`)假設只是SELECT :a,:b,:c,:d, `people`.`addressId` , `personId` , `lName` ,`fName`
所以更新后的代碼應該是:
$incomeMonthly = $_POST['incomeMonthly'];
$isIncomeSourceSalary = $_POST['isIncomeSourceSalary'];
$isIncomeSourceBusiness = $_POST['isIncomeSourceBusiness'];
$isIncomeSourceRemittance = $_POST['isIncomeSourceRemittance'];
$sql = "INSERT INTO `households` (`incomeMonthly`, `isIncomeSourceBusiness`, `isIncomeSourceSalary`,`isIncomeSourceRemittance`, `addressId`, `personId`, `householdName`, `householdHeadName`)
SELECT :a,:b,:c,:d, `people`.`addressId` , `personId` , `lName` ,`fName`
FROM `people`
INNER JOIN `addresses` ON `people`.`addressId` = `addresses`.`addressId`
WHERE `isHeadOfFamily`=1 AND `barangay`='San Jose'";
$stmt = $db->prepare($sql);
$stmt->bindParam(":a", $incomeMonthly);
$stmt->bindParam(":b", $isIncomeSourceBusiness);
$stmt->bindParam(":c", $isIncomeSourceSalary);
$stmt->bindParam(":d", $isIncomeSourceRemittance);
$stmt->execute();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328741.html
