有人可以告诉我下面针对MySQL 5.5的语法有什么问题
$sql = "select tm.*, tt.tax_rate as tax from ".TABLE_MEMBER." tm left join ".TABLE_TAX_RATES." tt on tt.tax_rates_id = tm.rent_tax_class_id where plan_id='".$planid."'";
$rs = tep_db_query($sql);
$row_days = tep_db_fetch_array($rs);
if (!$row_days['tax']) $row_days['tax'] = 0;
答案 0 :(得分:1)
tt.* AS
语法无效,因为您无法为多列添加别名。您必须单独写出每个列(并根据需要对其进行别名),或者只是接受使用*
,您应该避免在生产中使用它们。您评论中的查询与您的问题中的查询不同,不会导致此错误。
您还应该使用正确的参数化查询 - 您的查询很容易被注入。
答案 1 :(得分:0)
您错过了在where子句
中提及表别名sql应该是
$sql = "select tm.*, tt.tax_rate as tax from ".TABLE_MEMBER." tm left join ".TABLE_TAX_RATES." tt on tt.tax_rates_id = tm.rent_tax_class_id where tm.plan_id='".$planid."'";
或
$sql = "select tm.*, tt.tax_rate as tax from ".TABLE_MEMBER." tm left join ".TABLE_TAX_RATES." tt on tt.tax_rates_id = tm.rent_tax_class_id where tt.plan_id='".$planid."'";