【发布时间】:2011-10-18 07:17:56
【问题描述】:
是什么导致了这个错误?怎么解决?
$find = 'hello';
$data = $this->db->query('SELECT * FROM tour_foreign_residence WHERE name LIKE "%' . $find . '%" UNION SELECT * FROM tour_foreign WHERE name LIKE "%' . $find . '%"');
错误:
发生数据库错误
错误号:1222
使用的 SELECT 语句的列数不同
SELECT * FROM tour_foreign_residence WHERE name LIKE "%hello%" UNION SELECT * FROM tour_foreign WHERE name LIKE "%hello%"
文件名: D:\xampp\htdocs\system\database\DB_driver.php
行号:330
【问题讨论】:
-
不要使用
select *,指定你想要的列。union不同部分的列必须具有相同的数据类型,并且列数必须相同。如果这无法实现,则需要有两个单独的选择语句。 -
请在这里阅读我的帖子:stackoverflow.com/questions/7800259/… 应该使用 UNION 还是什么?我的查询怎么样?
-
如果
$find实际上是任何类型的用户输入,请使用prepared statements,除非您想大搞 SQL 注入地狱。 -
我有几个数据库,没有一个数据库。
-
@Philipp Reichart - 你的订单是 php.net 中的示例 #6 吗?
标签: php sql codeigniter