阻止MySQL成功进行SELECT的数字字符

时间:2016-07-14 11:08:05

标签: php mysql

我从MySQL数据库中选择用户的详细信息,虽然大多数用户名已成功匹配,但包含数字的用户名不是。

在我的数据库表中,我在user_name列中有'examplename'和'examplename1'等记录。它们存储为VARCHAR,collat​​ion utf8_general_ci。

这会返回'详细信息':

SELECT details FROM username_table WHERE user_name = 'examplename'

然而这不是:

SELECT details FROM username_table WHERE user_name = 'examplename1'

为什么数字字符在VARCHAR字段中导致问题? (我也尝试过TEXT,也失败了。)

编辑:好的,我的错误。这些是简化的例子;我在实际的语句中有JOIN子句,巧合的是,在表中的28个用户中,我在用户名中只有两个用数字的连接错误。遗憾。

2 个答案:

答案 0 :(得分:0)

我知道这听起来很愚蠢,但您是否试图提取查询,以便您搜索的术语是它自己的变量?

类似的东西:

$var_name = "examplename1";
$SQL = "SELECT details FROM username_table WHERE user_name = $var_name";
....

当我的查询字符串中有数字时,这通常适用于我。

答案 1 :(得分:0)

  

为什么数字字符会导致VARCHAR字段出现问题?

MySQL在搜索包含数字字符的VARCHAR字段时没有任何问题。最可能的解释是username_table中没有记录,user_name设置为'examplename1'

试试这个:

SELECT details FROM username_table WHERE user_name LIKE 'examplename%'

它会显示user_nameexamplename

开头的所有记录