PHP / mySQL - in_array和Get Result

时间:2016-09-05 08:31:06

标签: php mysql arrays

我有一个如下所示的数组,该数组指的是我的数据库中的另一个数据,

    Array
(
    [0] => 4
    [1] => 1
    [2] => 15
    [3] => 1
    [4] => 1
)

如何选择值为1,并从具有value=1的表中获取最高值?

我使用in_array(1,$array)但它没有输出任何内容。以下是我的编码;

$sql = " Select * FROM table_name WHERE staff_id='".$_SESSION['staff_id']."' ORDER BY table_name DESC ";
$result=mysqli_query($conn,$sql) or die(mysqli_error());
$leave_id= array();
while($row_permohonan=mysqli_fetch_assoc($result_permohonan))
{  
    $leave_available = $row_permohonan['leave'];
    $leave_id[] = $row_permohonan['leave_id'];
} mysqli_free_result($result_permohonan);

//echo '<pre>'; print_r($leave_id); echo '</pre>';  
if(in_array(1,$leave_id)){
    echo $leave_available .'/'.$row['total_leave'];
}

2 个答案:

答案 0 :(得分:0)

我认为你错过了$result

$sql = " Select * FROM table_name WHERE staff_id='".$_SESSION['staff_id']."' ORDER BY table_name DESC ";
$result=mysqli_query($conn,$sql) or die(mysqli_error());
$leave_id= array();
while($row_permohonan=mysqli_fetch_assoc($result)) //Here
{  
    $leave_available = $row_permohonan['leave'];
    $leave_id[] = $row_permohonan['leave_id'];
} mysqli_free_result($result); //And here

答案 1 :(得分:0)

首先,您的代码不清楚。您正在使用:

echo $leave_available.'/'.$row['total_leave'];

&#34; $ row&#34;未在代码中的任何位置设置。如果您已经放在代码之上:

ini_set("display_errors", "On"); error_reporting(E_ALL);
如果您正在执行与您提供的完全相同的代码,那么PHP会因致命错误而中断。但我假设您将其设置在代码中的其他位置。

第二:你应该将你想要的数据返回到MySQL查询中。如果您只想知道数据库中是否至少有一行有leave_id = 1和staff_id = $ _ SESSION [&#39; staff_id&#39;],请在SQL查询中添加此条件:

$sql = "Select COUNT(*) AS nbrows FROM table_name WHERE staff_id='".$_SESSION['staff_id']."' AND leave_id=1 ORDER BY column_name DESC ";

然后:你必须使用&#34; ORDER BY&#34;带有列名的语句,而不是表名。

使用&#34; in_array&#34;:当您匹配&#34; 1&#34;时,我建议您添加&#34; true&#34;作为此函数的第3个参数(强制使用&#34;严格比较&#34;区分大小写和类型匹配):

in_array(1, $array, true)

然后,您还必须投射$ leave_id结果:

$leave_id[] = (int)...

(int)将字符串值强制转换为整数(因为数据库的PHP结果几乎是字符串)