[英]Got error SQLSTATE[HY000]: General error: 2031 when trying to execute if statement
我對 sql 的實際工作方式不是很有經驗,但我正在嘗試檢查數據庫是否包含一個值,如果是,那么它會找到 id 的所有值,如果不是,它只會將一個特定值綁定到這個想法。 我的錯誤日志中出現<?php foreach ($edited as $key => $value): ?>
我沒有嘗試太多來解決它,因為我遇到了障礙,但是我看到了一些關於綁定限制的內容,我不確定我的第一個查詢是否超過了該限制,或者我是否只是過於復雜了它和實際上有一種更短的方法來做我正在嘗試的事情。
//In user.php
public function isChangeRequested($requested){
if ($requested != "Requested"){
return true;
}
return false;
}
///
<?php
if (isset($_GET['id'])) {
try {
$id = $_GET['id'];
$requestedstatus = "SELECT change_request FROM timesheet WHERE id = :id";
$results = $db->query($requestedstatus);
if($user->isChangeRequested($results)){
$isrequested = "SELECT * FROM timesheet WHERE id = :id";
$statement = $db->prepare($isrequested);
$statement->bindValue(':id', $id);
$statement->execute();
$edited = $statement->fetch(PDO::FETCH_ASSOC);
}
else {
$notrequested = "SELECT approve_status FROM timesheet WHERE id = :id";
$statement = $db->prepare($notrequested);//submit_day, time_in, time_out, approve_status
$statement->bindValue(':id', $id);
$statement->execute();
$edited = $statement->fetch(PDO::FETCH_ASSOC);
}
} catch(PDOException $error) {
echo $sql . "<br>" . $error->getMessage();
}
} else {
echo "Something went wrong!";
exit;
}
?>
<form method="post" name="editform">
<?php foreach ($edited as $key => $value) : ?>
<label style="padding-top: 10px;" for="<?php echo $key; ?>"><?php echo ucwords(str_replace("_"," ", $key)); ?></label>
<input style="padding-top: : 10px;" type="text" class="form-control" name="<?php echo $key; ?>" id="<?php echo $key; ?>" value="<?php echo $value; ?>" <?php echo ($key === 'id' ? 'readonly' : null);?> <?php echo ($key === 'name' ? 'readonly' : null);?> <?php echo ($key === 'submit_status' ? 'readonly' : null);?> <?php echo ($key === 'user_id' ? 'readonly' : null);?>>
<?php endforeach; ?>
<input style="margin-top:20px;" class="btn btn-primary" type="submit" name="submit" value="Update Entry">
</form>
我的預期結果是,如果數據庫包含 Requested,主管可以查看和編輯所有字段,但如果沒有請求,那么主管只能查看和編輯 Approved 字段。
if (isset($_GET['id'])) {
try {
$id = $_GET['id'];
$requestedstatus = "SELECT change_request FROM timesheet WHERE id = :id";
$results = $db->prepare($requestedstatus);
$results->bindValue(':id', $id);
$results->execute();
$requestedresult = $results->fetch(PDO::FETCH_ASSOC);
foreach ($requestedresult as $thatshitsrequested)
echo $thatshitsrequested;
if(!$user->isChangeRequested($thatshitsrequested)){
$isrequested = "SELECT * FROM timesheet WHERE id = :id";
$statement = $db->prepare($isrequested);
$statement->bindValue(':id', $id);
$statement->execute();
$edited = $statement->fetch(PDO::FETCH_ASSOC);
}
else {
$notrequested = "SELECT approve_status FROM timesheet WHERE id = :id";
$statement = $db->prepare($notrequested);//submit_day, time_in, time_out, approve_status
$statement->bindValue(':id', $id);
$statement->execute();
$edited = $statement->fetch(PDO::FETCH_ASSOC);
}
} catch(PDOException $error) {
echo $sql . "<br>" . $error->getMessage();
}
} else {
echo "Something went wrong!";
exit;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.