Php mysql查询为不同列中的同一变量赋值
我有一个表,它有许多列,但有两个主要列,分别称为Php mysql查询为不同列中的同一变量赋值,php,mysql,sql,Php,Mysql,Sql,我有一个表,它有许多列,但有两个主要列,分别称为District和State。我的sql查询如下 $query = "SELECT * FROM table WHERE District = '" . $var . "' ORDER BY Date DESC"; 此查询从district列返回数据 这就是我想要的。在某些行中,District列是空的,因此在这种情况下,我希望查询从State列中提取数据。可能吗 这可以在mysql查询中完成,还是我必须用php编写一些东西?空是什么意思?如果为
District
和State
。我的sql查询如下
$query = "SELECT * FROM table WHERE District = '" . $var . "' ORDER BY Date DESC";
此查询从district列返回数据
这就是我想要的。在某些行中,District
列是空的,因此在这种情况下,我希望查询从State
列中提取数据。可能吗
这可以在mysql查询中完成,还是我必须用php编写一些东西?空是什么意思?如果为
NULL
,则应使用COALESCE
SELECT *, COALESCE(District, State) NewDistrict
FROM...
但如果它是空的,则为'
。然后
SELECT *, IF(District = '', State, District) NewDistrict
FROM...
你说的“提升”是什么意思?我是如何理解你的问题的?你需要
coalise
function尝试添加一个“Or state==。$var”这不是可以注入的吗?@Ck-这是离题的。此外:取决于$var的值是否被转义,我想说…@arkascha:即使它被转义,很明显OP没有使用预先准备好的语句,所以代码几乎肯定会被转义unsafe@arkascha我不太懂PHP,所以我只是好奇地想知道。加上指向OP的光标,他应该知道这一点。@Ck-当然,有意义。但是你应该在问题上加上这个评论,而不是在这个答案上。。。
$query = "SELECT * FROM table WHERE District = '" . $var . "' OR State = '" . $var . "' ORDER BY Date DESC";
SELECT *
FROM table
WHERE District = '$var'
OR (District='' AND State='var')
ORDER BY Date DESC