我无法弄清楚为什么DeleteTask.php不起作用,但RetrieveTask.php确实

时间:2016-12-13 10:13:27

标签: php mysql oop model-view-controller pdo

我不能为我的生活找出为什么DeleteTask函数不能正常工作,当它与RetrieveTask几乎相同时;只在不同的文件中调用。

现在:

的src /控制器/ RetrieveTask:

准备PDO数据库查询,并将其传递给src/view/DisplayTask.php<a>使用for循环来回显行,并使用src/controller/DeleteTask.php元素链接到src / redir / DeleteAndReturn.php。

此文件只执行src/controller/ReturnToIndex.php<?php function RetrieveTask($db) { $sql = 'SELECT * FROM task'; return $db->query($sql); } ?>

文件代码和顺序如下:

RetrieveTask

<?php

  function DisplayTask($db)
    {
         foreach (RetrieveTask($db) as $row)
        {
            echo "<li>" . $row['tsk-name'] . "<br>" . $row['tsk-desc'] . "<a id=".$row['id']." class='btn btn-danger' href='/todo/redir/DeleteAndReturn.php'>Delete</a>" . "</li>";
        }
    }

?>

哪个传递给DisplayTask:

/todo/home

将其传递给DisplayTask($DbHandler)目录中的index.php。我需要做的就是调用src/controller/DeleteTask.php其中$ DbHandler是db类的瞬间。

现在为<?php function DeleteTask($db) { echo "Delete"; $sql = ' DELETE FROM task where id= 2 '; return $db->query($sql); } ?>

src/controller/ReturnToIndex.php

<?php function ReturnToIndex() { header('Location: /todo/home'); } ?>

redir/DeleteAndReturn.php

导致<?php include_once('../src/model/db/DbConnect.php'); include_once('../src/controller/DeleteTask.php'); include_once('../src/controller/ReturnToIndex.php'); $DbHandler = new DbConnect(); DeleteTask($DbHandler); $DbHandler->CloseConnection(); ReturnToIndex(); ?>

onPause()

我已尝试将项ID作为查询字符串中的get参数传递。删除所有表格。手动选择id。我无法让它发挥作用。任何帮助将非常感激。我用谷歌搜索并查找了几个小时的文档。我觉得这是非常简单的事情,只是在我的脑海里。

完整代码在此处:https://github.com/liengesbor

1 个答案:

答案 0 :(得分:0)

正如maxim_039建议的那样,我改变了如何将变量数组传递给DB构造。不知怎的,这解决了这个问题。

     function __construct()
     {
-        parent::__construct('mysql:host=localhost;dbname=todo;', 'root', 'alexel', array ('$opt'));
+        parent::__construct('mysql:host=localhost;dbname=todo;', 'root', 'alexel', $this->opt);
         echo "Connected to Database";
     }

这是数据库代码:

<?php
// Connect to the database using PDO and MySQL

class DbConnect extends PDO
{
    protected $dsn        = "mysql:host=localhost;dbname=todo;";
    protected $dbPassword = 'alexel';
    protected $dbUsrName  = 'root';
    protected $opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    );

     function __construct()
    {
        parent::__construct('mysql:host=localhost;dbname=todo;', 'root', 'alexel', $this->opt);
        echo "Connected to Database";
    }
    function CloseConnection()
    {
        $this->DbConnection = null;
    }
}
?>