3

我目前有一个可在 mySQL 工作台 5.2 中运行的 mySQL 查询,但不幸的是,当我将其转换为我的 php 文件时,CONCAT 函数只能获取 FirstName,但不能获取 LastName。如果我不使用单引号在名字和姓氏之间建立空格,我可以检索全名,但是当我添加空格代码时,它只检索名字。

例如,如果我不添加名称之间的间距并使用代码的此修改部分调用 EmployeeName ,则它可以工作:

    SELECT * , concat(FirstName,LastName) as 'EmployeeName'

但输出将是 BruceWayne

下面的代码是我调用 EmployeeName 时 CONCAT 无法检索 LastName 的地方

      $sql = " 

      SELECT * , concat(FirstName," . "' '" . ",LastName) as 'EmployeeName'
      FROM tblEquipment e
      INNER JOIN tblEmployee em on em.employee_id = a.employee_id
      INNER JOIN tblStatus s on s.Status_id = e.equipment_id
      WHERE e.name = " . "'" . $q . "'" . ";
    ";

         while($row = mysql_fetch_array($result))
    {
          echo "
            <td>
                Equipment ID:
            </td>
            <td>
                <input type='text' size='25' disabled value = " . $row['Equipment_ID'] . ">
            </td>

            <td style='padding-left:10px;'>
                Currently Assigned To:
            </td>
            <td>
                <input type='text' size='25' disabled value = " . $row['EmployeeName'] . ">
            </td>
           ";
           }

输出只有名字:布鲁斯。有没有人有什么建议?

4

1 回答 1

3

value=在 HTML 标记中的属性没有被引用,因此只会接受第一个空格前面的一个单词。您应该转义并引用值属性。每当您将变量打印到 HTML 标记中时,您都需要通过htmlspecialchars().

将变量打印到 HTML 标记属性中时,我建议使用htmlentities()选项ENT_QUOTES来转义属性内的单引号和双引号。

echo "
        <td>
            Equipment ID:
        </td>
        <td>
            <input type='text' size='25' disabled value='" . htmlentities($row['Equipment_ID'], ENT_QUOTES) . "'>
        </td>

        <td style='padding-left:10px;'>
            Currently Assigned To:
        </td>
        <td>
            <input type='text' size='25' disabled value='" . htmlentities($row['EmployeeName'], ENT_QUOTES) . "'>
        </td>
       ";
       }

请注意,无需在您的 : 中断开字符串并连接CONCAT()

" SELECT * , concat(FirstName, ' ',LastName) as 'EmployeeName

同样在 中WHERE$q可以直接插入到双引号字符串中。我们假设它已通过mysql_real_escape_string(). 从长远来看,考虑切换到支持预准备语句的 API。该mysql_*()API 在即将到来的 PHP 5.5 中面临弃用。

"WHERE e.name = '$q'";
于 2013-03-01T17:22:35.430 回答