我是 PHP 的新手,所以我提前为我发布的任何令人作呕的错误代码道歉...
我为健身训练营创建了一个基本的成员(member)系统。我有两个 SQL 表 - “成员”和“付款”。
我已经创建了一个表,并使用一个循环,我可以显示所有成员。现在,我希望能够使用函数 checkpayment() 检查成员(member)是否已付款。
此函数检查付款表,以查看在当前月份和年份内是否有包含该成员(member) ID 的付款的行。
即使在付款表中输入付款,用户仍显示为未付款。
function checkpayment($memberid, $month, $year){
global $db;
$payments = "SELECT * FROM 'payments' WHERE member_id = :memberid";
$result = $db->prepare($payments);
$result->bindParam(':memberid', $memberid, PDO::PARAM_INT);
$result->bindParam(':month', $month, PDO::PARAM_INT);
$result->bindParam(':year', $year, PDO::PARAM_INT);
return $result->fetchColumn();
}
下面是显示成员的代码:
foreach($db->query('SELECT * FROM `members`') as $row) {
$checkpayment = checkpayment($row['id'],10,2014);
if(!$checkpayment){
$status = "danger";
$paid = "Unpaid";
} else {
$status = "success";
$paid = "Paid";
}
echo '<tr class="'. $status .'">
<td>'. $row['id'] .'</td>
<td>' . $row['first_name'] . '</td>
<td>' . $row['last_name'] .'</td>
<td>' . $paid . '</td>
<td>' . $row['programme'] . '</td>
</tr>';
}
但是,即使存在付款行,成员仍显示为未付款...
最佳答案
据我所知,如果您正在使用 prepare
函数,您还必须使用 execute()
。试试下面,如果不行我会更新。
Here你可以看到一些关于 execute()
function checkpayment($memberid, $month, $year){
global $db;
$payments = "SELECT * FROM payments WHERE member_id = :memberid";
$result = $db->prepare($payments);
$result->bindParam(':memberid', $memberid, PDO::PARAM_INT);
$result->execute();//ADD This line
return $result->fetchColumn();
}
关于php - 在函数内通过 PDO 访问数据 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266745/