【问题标题】:Mysql varchar comparingMysql varchar 比较
【发布时间】:2012-04-02 17:54:08
【问题描述】:

在我的 mysql 数据库中有 2 个表。 1.A 2.B

表A中的列是id(varchar)primary key,location(varchar),date(date) 表 B 中的列是 id(varchar)foreign key,activity(varchar),cost(int)

我使用搜索框,如果两个表的 id 字段都匹配,则显示结果。 当我使用数字时,它可以正常工作,但是当我使用字母数字值时,它就不起作用了。

所以请帮助我 提前致谢。

【问题讨论】:

  • 需要比这更多的信息,但首先想到的是您可能没有引用字符串。
  • 显示您的比较代码

标签: php mysql


【解决方案1】:

首先:使用 varchar 作为 id 可能是个坏主意。如果您想在现在存储在 id 字段中的位置/活动中存储某种信息,您可能需要考虑添加另一个字段,使 id 成为整数并仅比较整数。

也就是说,它应该只适用于以下内容:

SELECT *  
FROM A, B  
WHERE A.id = B.id AND A.fieldthatwassearched = '".$value_from_php."' ;

还有:

SELECT *
FROM A, B
WHERE A.id = B.id AND A.id = '".$value_from_php."'

不是值周围的'"和"',这些很重要,因为你需要给mysql发送一个字符串,所以它需要被引用;)

【讨论】:

  • 值 $value_from_php 可能容易受到 SQL 注入攻击。在示例中使用 mysql_real_escape_string($value_from_php) 或不要使用 PHP 变量。
  • 没错,这是搜索式查询的最基本示例。您应该研究一下 SQL 注入之类的东西,Martin 的解决方案应该可以解决大部分问题:)
【解决方案2】:

这对你不起作用?

SELECT *
from A
inner join B on B.id = A.id
WHERE A.id = 'whatyoursearchingfor'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多