我有一个如下所示的数组,该数组指的是我的数据库中的另一个数据,
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'];
}
答案 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结果几乎是字符串)