mysql while循环中的数组到字符串转换

时间:2016-06-01 04:21:16

标签: php mysql

以下是我的代码,

  $result1 = "SELECT emp_id FROM employee where manager_id=".$userID;
            $array = mysql_query($result1);
            $cnt = 0;
            while ($row = mysql_fetch_array($array)) {
                 "emp_id: " . $row[0];
                 $myArrayOfemp_id[$cnt] = $row[0];
                 $cnt++;
            }
            var_dump($myArrayOfemp_id);

            $sql = "SELECT emp_id FROM emp_leaves WHERE emp_id='$myArrayOfemp_id' ORDER BY apply_date DESC";
            $result = mysql_query($sql);
            $total_results = mysql_num_rows($result);

当我尝试在$myArrayOfemp_id查询中使用$sql变量时,它会显示错误:

  

数组转换为..

中的字符串转换

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您正尝试将数组转换为以下行中的字符串:

$sql = "SELECT emp_id FROM emp_leaves 
WHERE emp_id='$myArrayOfemp_id' ORDER BY apply_date DESC";

$myArrayOfemp_id是一个数组。上一行代码应更改为:

$sql = "SELECT emp_id FROM emp_leaves 
WHERE emp_id={$myArrayOfemp_id[0]} ORDER BY apply_date DESC";

我将0放在{$myArrayOfemp_id[0]}内,因为我不确定数组中要使用的值是什么。

<强>编辑:

在讨论了用户在问题中想要的内容之后,似乎用户希望在sql语句中使用数组中的所有值,因此这是针对该特定情况的解决方案:

$sql = "SELECT emp_id FROM emp_leaves 
WHERE ";
foreach ($myArrayOfemp_id as $value)
{
    $sql .= " emp_id={$value) || ";
}
$sql .= "1=2";
$result = mysql_query($sql);
$total_results = mysql_num_rows($result);

答案 1 :(得分:1)

$sql = "SELECT emp_id FROM emp_leaves WHERE emp_id in 
       (SELECT GROUP_CONCAT(emp_id) FROM employee where manager_id=".$userID.") 
       ORDER BY apply_date DESC";
        $result = mysql_query($sql);
        $total_results = mysql_num_rows($result);

如上所述更改您的查询可能会解决您的问题。

您现在可以删除以下代码。 :)

$result1 = "SELECT emp_id FROM employee where manager_id=".$userID; $array = mysql_query($result1); $cnt = 0; while ($row = mysql_fetch_array($array)) { "emp_id: " . $row[0]; $myArrayOfemp_id[$cnt] = $row[0]; $cnt++; } var_dump($myArrayOfemp_id);