PHP - 函数中的 $row[$variable]

Stu*_*old -2 php mysql variables function

我试图从函数中调用 $row (数据库数组),但根据变量调用列名。

这是完整的代码...您可以在以下位置查看结果

http://tlcs.stuart-pinfold.co.uk/test.php?id=20

http://tlcs.stuart-pinfold.co.uk/test.php?id=21

<?php
include("includes/db.php"); // includes all the db connections

$id = $_GET['id'];

$sql = "SELECT * FROM users WHERE UserID='".$id."'";
$set = mysql_query($sql);
$row = mysql_fetch_array($set);

function checkAvailability($day)
{
 $check = "UserCommute".$day;
 if($row[$check]=="1")
 {
  echo '<img src="/tick.jpg" alt="Available on this day" />';
 }
 else
 {
  echo '<img src="/cross.jpg" alt="Not available on this day" />';
 }
 echo " = ".$check."<br/>";
}

echo "Full Name:<br/>".$row['UserFullName']; // this works perfectly

echo "<br/><br/>Using the function...<br/>";

echo checkAvailability('Mon');
echo checkAvailability('Tue');
echo checkAvailability('Wed');
echo checkAvailability('Thu');
echo checkAvailability('Fri');
echo checkAvailability('Sat');
echo checkAvailability('Sun'); // these always return a cross even when the database entry is 1

echo "<br/>Using hard-coded row values...<br/>";

echo $row['UserCommuteMon']." = UserCommuteMon<br/>";
echo $row['UserCommuteTue']." = UserCommuteTue<br/>";
echo $row['UserCommuteWed']." = UserCommuteWed<br/>";
echo $row['UserCommuteThu']." = UserCommuteThu<br/>";
echo $row['UserCommuteFri']." = UserCommuteFri<br/>";
echo $row['UserCommuteSat']." = UserCommuteSat<br/>";
echo $row['UserCommuteSun']." = UserCommuteSun<br/>"; // these work perfectly, returning 0s or 1s, matching the database

?>
Run Code Online (Sandbox Code Playgroud)

它只返回十字架,从不滴答。

我哪里错了?

Tim*_*Tim 5

您正在定义一个函数,该函数内部没有$row.

要么在那里定义一个新查询,以检查用户在给定日期是否有空,要么删除该功能并比较没有该功能的字段。

所以不要做checkAvailability('Mon');

if($row["UserCommuteMon"] === 1) {

}
Run Code Online (Sandbox Code Playgroud)

或给$row你的功能。喜欢checkAvailability($row, 'Mon');

并记得清理你的$_GET['id']以防止 SQL 注入。