我已经下拉了下拉列表是namaJabatan
$sql = "SELECT * FROM infojawatan WHERE namaJabatan = '$search' && tarikh Kemaskini IN (SELECT MAX(tarikhKemaskini) FROM infojawatan GROUP BY ID)";
$sql_rs = mysql_query($sql);
while($row_Sql = mysql_fetch_array($sql_rs)) {
$tarikhKemaskini = $row_Sql['tarikhKemaskini'];
}
echo "Current Date :" .$tarikhKemaskini;
答案 0 :(得分:0)
您的SQL中存在一些语法错误。
AND
,而不是&&
。tarikhKemaskini
是一个字。SELECT *
FROM infojawatan
WHERE namaJabatan = :namaJabatan AND
tarikhKemaskini IN (
SELECT MAX(tarikhKemaskini)
FROM infojawatan
GROUP BY ID
)
请注意,我在那里使用了:namaJabatan
而不是硬编码$search
。将硬编码变量导入SQL会使您向SQL Injection Attack开放,恶意攻击者可以在其中创建搜索查询,以便获取比允许的信息更多的信息,甚至可以运行任意SQL查询。
相反,使用参数:namaJabatan
,然后在执行查询时传入变量。
不幸的是mysql_query
接口不支持此功能。幸运的是it was deprecated并且现在有更好的接口。 Here's a breakdown。我建议使用PDO,因为它是适用于任何SQL数据库的通用接口。然后,您可以使用更安全,更高效的prepared statements with bind parameters。
$stmt = $dbh->prepare("
SELECT *
FROM infojawatan
WHERE namaJabatan = :namaJabatan AND
tarikhKemaskini IN (
SELECT MAX(tarikhKemaskini)
FROM infojawatan
GROUP BY ID
)
")
$stmt->execute(array( ':namaJabatan' => $search));
while( $row = $stmt->fetch() ) {
echo $row['tarikhKemaskini'];
}