【发布时间】:2016-07-31 06:09:38
【问题描述】:
$sql="SELECT * FROM book_seat INNER JOIN seat ON book_seat.seat_id=seat.seat_id
INNER JOIN users ON book_seat.user_id=users.user_id
WHERE 1=1";
if($type)
{
$sql.= " AND seat.type=$type";
}
if($name)
{
$sql.= " AND users.name=$name";
}
if($flightdate)
{
$sql.= " AND book_seat.date_booked=$flightdate";
}
if($seat)
{
$sql.=" AND seat.seat=$seat";
}
$type、$flightdate、$seat 一切正常,但如果我输入 $name,它会给出错误。例如,如果我输入 abc,它会给出以下信息。 users 表中有 name 列。
异常(数据库异常)'yii\db\Exception' 带有消息 'SQLSTATE [42S22]:找不到列:1054 未知列 'abc' 在 'where 子句' 正在执行的 SQL 是:SELECT * FROM book_seat INNER JOIN 座位 ON book_seat.seat_id=seat.seat_id INNER JOIN users ON book_seat.user_id=users.user_id WHERE 1=1 AND users.name=abc'
【问题讨论】:
-
把 name 变量放在单引号中,因为它是一个字符串
-
使用像
..AND `users`.`name`='$name'这样的反引号 -
在 users 表中你有
name的列吗?