SQL拉出每列的第一个字符

时间:2015-10-27 18:58:13

标签: php sql

所以我有一个下拉列表,其中包含可供您选择的客户列表。它使用一个函数(其他人构建的),当有2个或更多客户时可以正常工作,但只有一个客户死时才能工作。当有一位客户时,dropdown中的每个项目都是该客户的每个column的第一个字符。

以下是功能

function getCustomerBy($column = "",$value = "")
        {
            global $conn;
            if ($value == '')
                {
            return(null);
                }
            $sel = "SELECT 
            customers.*,
            customerStatus.code customerStatus
            FROM customers,
            customerStatus      
            WHERE customer_id
            and  customerStatus.id = customers.customerStatus_id and   ". mysqli_real_escape_string($conn,$column) ."='". mysqli_real_escape_string($conn,$value) ."'";
            //      error_log($sel);
            $run = mysqli_query($conn, $sel);
            $check = mysqli_num_rows($run);

            if ($check ==1)
            {
                    $row = mysqli_fetch_assoc($run);
                    return($row);
            }
            elseif($check >1)
            {
                    $rows = array();
                    while ($row = mysqli_fetch_assoc($run))
            {
                    $rows[] = $row;
            }
                    return($rows);
            }
            else
            {
                    return(null);
            }
    }

我相当肯定它是($check == 1)的东西但是我无法找到最好的方法来重新做所有这些以使其工作而不会造成其他错误(特别是"无法修改标题")

这是使用dropdown

在页面上调出的内容
 $customers = getCustomerBy('users_user_id',$user['user_id']); 

此外,这是dropdown的代码:

 <?
      foreach ($customers as $customer)
      {
      $selected = '';
      if (isset($gig['customers_customer_id']) && $customer['customer_id'] == $gig['customers_customer_id'])
 {
      $selected = ' selected ';
 }
 echo "\t<option value=\"".$customer['customer_id']."\"      $selected>".$customer['customer_company_name']."</option>";
 }
 ?>

Broken dropdown

2 个答案:

答案 0 :(得分:0)

我不知道代码的其余部分如何使用返回的数组,但您可以尝试以下操作:

变化:

if ($check ==1) {
    $row = mysqli_fetch_assoc($run);
    return($row);
}

对此:

if ($check == 1) {
    $rows = array();
    $rows[] = mysqli_fetch_assoc($run);
    return($rows);
}

答案 1 :(得分:0)

构建下拉列表的代码需要一个数组数组,但是当它是一行时,你会传递一个字符串数组。同时处理两种情况($check > 0)。

function getCustomerBy($column = "",$value = "")
    {
        global $conn;
        if ($value == '')
            {
        return(null);
            }
        $sel = "SELECT 
        customers.*,
        customerStatus.code customerStatus
        FROM customers,
        customerStatus      
        WHERE customer_id
        and  customerStatus.id = customers.customerStatus_id and   ". mysqli_real_escape_string($conn,$column) ."='". mysqli_real_escape_string($conn,$value) ."'";
        //      error_log($sel);
        $run = mysqli_query($conn, $sel);
        $check = mysqli_num_rows($run);

        if($check > 0)
        {
                $rows = array();
                while ($row = mysqli_fetch_assoc($run))
        {
                $rows[] = $row;
        }
                return($rows);
        }
        else
        {
                return(null);
        }
}

我认为您的查询中存在复制/粘贴错误,因为它看起来并不正确。