如何检查一个数组元素是否存在于Mysql中?

3

我有一个静态菜单,其中包含一些课程列表,所有内容都是静态的。

我希望只有活动的课程在菜单上显示,并且要按照相同的顺序进行排列。

我将所有子菜单的内容存储在一个变量中,如果在数据库中处于活动状态,则显示,否则不显示。

我正在学习并希望以正确的方式完成它。

但是这段代码还没有起作用。有人能帮忙吗?

<?php
//conexion DB
$dbLink = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'username', 'password', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

//array for order
$coursesarr = array('spanish', 'english', 'latin');


//query mysql
$qry_courses = "SELECT `shortname`, `visible` FROM `courses` WHERE visible = 1";


//define static varibles
$spanish = '<li><a href="/spanish.html">spanish</a>
<ul>
    <li>task 1 select course</li>
    <li>task 2 select course</li>
    <li>task 3 select course</li>
    ...
</ul></li>';
$english = '<li><a href="/english.html">English</a>
<ul>
    <li>task 1 select course</li>
    <li>task 2 select course</li>
    <li>task 3 select course</li>
    ...
</ul></li>';
$latin = '<li><a href="/latin.html">Latin</a>
<ul>
    <li>task 1 select course</li>
    <li>task 2 select course</li>
    <li>task 3 select course</li>
    ...
</ul></li>';

//PDO execute
$stmt = $dbLink->prepare($qry_courses);
$stmt->execute();

//Generate query DB and create menu
echo '<nav><ul>';
    while($row_courses = $stmt->fetchAll(PDO::FETCH_ASSOC))  {
        if(in_array("$row_courses['shortname']", $coursesarr){
            echo $.'$row_courses['shortname']'.;
        }
    }
echo '<ul><nav>';
?>

谢谢你


5
请停止使用mysql_*函数。它们已经不再维护,而且被正式弃用。请学习使用预处理语句,考虑使用PDO,它并不像你想象的那么难 - Jay Blanchard
3
针对这行代码:if($row_courses['shortname'] == $coursesarr){,请查看in_array()函数。提示:该函数可用于检查数组中是否存在特定的值。 - user3849602
@JayBlanchard 谢谢朋友,我改用PDO了,请帮忙检查一下是否正确。caCtus我已经改成了in_array()。 - laur
1
fetchAll 返回所有行,因此您需要循环遍历结果数组以检查每一行。 - Jay Blanchard
1个回答

0

请按以下方式更改

    if(in_array("$row_courses['shortname']", $coursesarr){
        echo $.'$row_courses['shortname']'.;

 if($row_courses['shortname'] == $coursesarr){
        echo $row_courses['shortname'];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接