【问题标题】:Unknown Column In Where Clause (as)Where 子句中的未知列 (as)
【发布时间】:2020-11-12 21:32:55
【问题描述】:
SET @value = '';
SELECT 
    id, order_kind, property_kind, town, images, agreement, uprice, eprice,
    tprice, pprice, bprice, qprice, status, createtime, town_title, fullname, 
    mobile, profile_image, area, barea, address, 
    CONCAT(id+9000) AS sid,
    CONCAT(area,' m') AS marea,
    CONCAT(barea,' m') AS mbarea 
FROM `sells` 
WHERE `order_kind` = '$order_kind' 
  AND `property_kind` = '$property_kind' 
  AND (
      sid LIKE CONCAT('%', @value, '%') || 
      town_title LIKE CONCAT('%', @value, '%') || 
      fullname LIKE CONCAT('%', @value, '%') || 
      mobile LIKE CONCAT('%', @value, '%') || 
      marea LIKE CONCAT('%', @value, '%') || 
      mbarea LIKE CONCAT('%', @value, '%') || 
      address LIKE CONCAT('%', @value, '%') 
  )

我使用这个 sql 进行搜索,并在 where 子句中出错未知列 'sid'
我改变了在哪里有但不工作的 php 循环

【问题讨论】:

标签: mysql sql string where-clause sql-like


【解决方案1】:

您的查询在SELECT 子句中将sid 定义为CONCAT(id+9000) AS sid。您不能在 WHERE 子句中重用该别名。相反,您需要重复表达式。

所以基本上改变这个条件:

sid LIKE CONCAT('%', @value, '%')

收件人:

CONCAT(id+9000) LIKE CONCAT('%', @value, '%')

重要提示:使用准备好的语句!不要在查询字符串中连接 PHP 变量:这既低效又不安全。推荐阅读:How can I prevent SQL injection in PHP?

【讨论】:

    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 2021-09-19
    • 2020-06-28
    • 2021-07-02
    • 2019-08-14
    • 2013-07-18
    • 2016-10-04
    相关资源
    最近更新 更多