0
我有一個MySQL數據庫有三個表:問題與MySQL連接表
- 用戶的列表項的
- 列表任務表的
- 名單說哪些用戶會做哪些任務(連接表)
每天的任務列表都會改變。所以我會在phpmyadmin中手動更改這個任務列表。我想要的是將每項任務分配給每個用戶。我可以看到這是在phpmyadmin中可以手動執行的,但對於多個用戶手動執行此操作並不可行。
我真的很努力地看到我在代碼中做了什麼錯誤。我對PHP真的很陌生。當我發佈正確的URL與郵遞員(我正在做一個API使用苗條)它說沒有錯誤,但當我檢查我的MySQL數據庫的用戶任務表仍然是空的。
這裏是我的index.php代碼:
$app->post('/tasks', function() use ($app) {
$headers = apache_request_headers();
$response = array();
if (isset($headers['Authorization'])){
$db = new DbHandler();
$api_key = $headers['Authorization'];
if ($api_key == '12345'){
$task_id = $db->createUserTask();
}else{
$response["error"] = true;
$response["message"] = "Invalid Api key";
echoRespnse(400, $response);
$app->stop();
}
}else{
$response["error"] = true;
$response["message"] = "Invalid Api Key";
echoRespnse(400, $response);
$app->stop();
}
});
這裏是我的createUserTask功能的代碼是DbHandler的一部分:
public function createUserTask() {
$no_users = $this->conn->prepare("SELECT MAX (id) FROM users");
$no_tasks = $this->conn->prepare("SELECT MAX (id) FROM tasks");
if ($no_users >= 0 && $no_tasks >=0){
for($i = 1; $i == $no_users; $i++){
for ($u = 1; $u == $no_tasks; $u++){
$stmt = $this->conn->prepare("INSERT INTO user_tasks(user_id, task_id) values(i, u)");
$result = $stmt->execute();
if (false === $result) {
die('execute() failed: ' . htmlspecialchars($stmt->error));
}
$stmt->close();
}
}
}
}
你能看到我做了什麼錯誤?
感謝您抽出時間幫助。當我嘗試SQL時,我得到500內部錯誤,錯誤是意想不到的。你的意思是把所有的代碼從$ no_users中刪除到createUserTask中if語句的結尾嗎?這個sql是否也將每個任務分配給每個用戶或僅爲一個?再次感謝 – josh
沒有看到你已經嘗試過的東西,很難說出可能出錯的東西。 sugested的sql語句非常注意整個createUserTask()函數。在phpmyadmin中執行它的選擇部分,你會明白它在做什麼。 – Shadow
我在我的代碼中運行該程序。只是在phpmyadmin中嘗試過,它完美運行。我也認爲這種方法比我之前試圖做的更安全。非常感謝。 :) – josh