[英]Query does not work with Mysqli php class but works in MySQL workbench
我正在使用在github 上找到的 mysqli 數據庫類
我的查詢看起來像
$db->query('
SELECT
memberID,zoneCode,state,zone,countyName,
CONCAT(state,\'Z\',zone) as fullZoneCode
FROM members_zonesToWatch
LEFT JOIN (
SELECT state,zone,countyName
FROM countyPublicForcastZoneCorrelation
) as zones
ON zoneCode = CONCAT(state,\'Z\',zone)');
我得到的問題是
Fatal error: Problem preparing query
(SELECT
memberID,zoneCode,state,zone,countyName,
CONCAT(state,'Z',zone) as fullZoneCode
FROM members_zonesToWatch
LEFT JOIN (
SELECT state,zone,countyName
FROM countyPublicForcastZoneCorrelation
) as zones
ON zoneCode = CONCAT(state,'Z',zone))
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near
''Z',zone) as fullZoneCode FROM members_zonesToWatch LEFT' at line 1
這個查詢在 mysql workbench 中工作得很好。 使用 mysqli 類有什么問題?
不應該是
SELECT
m.memberID, m.zoneCode, m.state, m.zone, m.countyName,
CONCAT(m.state,'Z',m.zone) as fullZoneCode,
c.state, c.zone, c.countyName
FROM members_zonesToWatch m
LEFT JOIN countyPublicForcastZoneCorrelation c
ON c.zoneCode = CONCAT(m.state, 'Z', m.zone)
在對您的案例進行測試后,問題是'Z'
和$db->query
這是因為MysqliDB
內部使用mysqli
並且mysqli
在prepare
語句時拋出異常(從調試器看來,引號'
變成了'
)。
相反, MysqliDB
為像您這樣的案例提供rawQuery
。 所以使用下面的:
$result = $db->rawQuery('
SELECT m.memberID, CONCAT(m.state, ? ,m.zone) as fullZoneCode
FROM members_zonesToWatch m
LEFT JOIN countyPublicForcastZoneCorrelation c
ON c.zoneCode = CONCAT(m.state, ? ,m.zone)',
array('Z','Z'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.