选择带有值空格的SQL

时间:2014-05-27 04:11:16

标签: php mysql sql sql-server

我有一个像这样的php文件:

<?php define('AREA', 'C');
    require ('prepare.php');
    require ('init.php');
    $con = mysql_connect(Registry::get ( 'config.db_host' ), Registry::get ( 'config.db_user' ), Registry::get ( 'config.db_password' ))or die("Unable to connect to MySQL");
    mysql_select_db(Registry::get ( 'config.db_name' ));
     if (!empty($_POST['dealer_company']))
     {
         $dealerCompany = 'Your company'; //$_POST['dealer_company'];                
         $result = mysql_query("SELECT distinct a.firstname, a.lastname, a.email, a.user_id
     FROM cscart_users a,cscart_usergroup_links b, cscart_usergroup_descriptions c
     WHERE b.usergroup_id=c.usergroup_id and b.status = 'A' and a.user_id=b.user_id and   
         c.usergroup='Dealer' and a.company = 'Your company'",$con) or die(mysql_error());

        while($row = mysql_fetch_array($result))
        {
            $d_Infos[]=$row;            
        }
     }
     if (!empty($_POST['dealer_company']))
     {
        $dealerInfos = '<select id="as_dealer_id" name="as_dealer_id" class="input-text">
            <option value="">Please select</option>';

                        foreach ($d_Infos as $k => $v)
                        {
              $dealerInfos .= '<option value="'.$v['user_id'].'">'.$v['firstname'].'</option>';                
            } 
     $dealerInfos .= '</select>';
         echo $dealerInfos;
      }
?>

正如您所看到的,我有一个条件是a.company =&#39;您的公司&#39;在SQL查询中。 但它无法选择具有该值的列。结果是空的。如果&#34;您的公司&#34;中没有空格,例如:&#34;您的公司&#34;,它将起作用。 所以我的问题是: 是否可以选择条件中包含空格的行? 非常感谢你。

3 个答案:

答案 0 :(得分:5)

将以下内容与PHP trim()函数一起使用。

$dealerCompany = trim($_POST['dealer_company']);

以及:

and a.company = '".$dealerCompany."'

这将&#34;削减&#34;左侧和/或右侧的任何空间。

将数据插入数据库时​​也可以使用相同的功能。如果有人在表单的输入元素的开头和/或结尾处输入一个或多个空格,这将确保在条目的左侧和/或右侧不包含空格。

  • 最好立即这样做以避免并发症。

答案 1 :(得分:1)

你能试试吗,添加了a.company LIKE '%Your company%'

 $result = mysql_query("SELECT distinct a.firstname, a.lastname, a.email, a.user_id
                               FROM cscart_users a,cscart_usergroup_links b, cscart_usergroup_descriptions c
                               WHERE b.usergroup_id=c.usergroup_id and b.status = 'A' and a.user_id=b.user_id and c.usergroup='Dealer' and a.company LIKE '%Your company%'",$con) or die(mysql_error());

答案 2 :(得分:1)

您可以在数据的第一个和最后一个添加通配符字符串(%)。但它也没有搜索字符串。

所以有两种可能性就是将所有空间都修剪为

where replace(columnname ,' ','') = '''%'+ replace(@value,' ','') + '%'''

select REPLACE ('abadf adsfa',' ','')

或 第二个选项是使用FTS(全文搜索)。

http://blog.sqlauthority.com/2008/09/05/sql-server-creating-full-text-catalog-and-index/

http://msdn.microsoft.com/en-us/library/ms142571.aspx