前段时间我写了一个PHP脚本并将一些MySQL表名定义为常量。现在我正在添加一些更新,为了简化可读性,我想在UPDATE语句中使用表格缩写。
在SELECT-Statements中我使用它们没有像SELECT * FROM table t INNER JOIN table2 t2......
这样的问题,但是在UPDATE-Statement中它一直告诉我找不到我的列名。
这是一个例子:
$sql = $connection->prepare("UPDATE `" . TBLCUSTMANAGMNT . "` m
INNER JOIN `" . TBLCUSTOMERS . "` c ON (c.id = m.customerID)
SET `c.name` = :cName, `m.posOrder` = :posOrder, `m.posDeliver` = :posDeliver, `m.transactionFirst` = :transactionFirst, `m.transactionLast` = :transactionLast,
`m.transactionCount` = :transactionCount, `m.posCount` = :posCount, `m.posParticipation` = :posParticipation, `m.active` = :active
WHERE c.id = :id AND c.guid = :guid");
执行后我收到错误告诉我,找不到列c.name。
我是否必须明确地写出完整的表格名称: tableName 。 columnName ?
提前致谢
答案 0 :(得分:1)
使用反引号时,您需要执行
`c.name`
而不是
&&
答案 1 :(得分:0)
您正在以错误的方式使用引用。 `c.name`
- MySQL会查找列'c.name'。 `c`.`name`
- 这是从表'c'获取列'name'的正确方法。