Php 尝试从表中删除行

Php 尝试从表中删除行,php,mysql,Php,Mysql,目前,我正在一张表格中显示所有在健康中心登记的患者。我添加了一个删除按钮或删除链接,将患者从表格中删除。当我单击“删除”按钮时,会收到一条错误消息,以前显示的所有患者都已消失,“所有患者视图”页面现在会回显“0结果”。 如果有人能帮我解决这个问题,这样我就可以把一个病人从桌子上拿下来,我将不胜感激 错误消息 警告:main():无法在第48行的E:\WebProgrammingAssignment\views\AllPatientsView.php中获取mysqli\u结果 更新的登记患者模型

目前,我正在一张表格中显示所有在健康中心登记的患者。我添加了一个删除按钮或删除链接,将患者从表格中删除。当我单击“删除”按钮时,会收到一条错误消息,以前显示的所有患者都已消失,“所有患者视图”页面现在会回显“0结果”。
如果有人能帮我解决这个问题,这样我就可以把一个病人从桌子上拿下来,我将不胜感激

错误消息

警告:main():无法在第48行的E:\WebProgrammingAssignment\views\AllPatientsView.php中获取mysqli\u结果

更新的登记患者模型

<?php
require_once('DAO.php');

class RegisterPatientModel extends DAO
{

    protected $target = "patient";

    public function __construct()
    {
        parent::__construct();
    }

    public function insertPatient($firstname, $lastname, $patstreet, $patcity, $patpostcode, $patphone, $doctorid, $dob)
    {
        $firstname = parent::escape($firstname);
        $empnin = parent::escape($lastname);
        $patstreet = parent::escape($patstreet);
        $patcity = parent::escape($patcity);
        $patpostcode = parent::escape($patpostcode);
        $sql = "INSERT INTO {$this->target} (`firstname`, `lastname`, `patstreet`, `patcity`, `patpostcode`, `patphone`, `doctorid`, `dob`) VALUES ('{$firstname}', '{$lastname}', '{$patstreet}', '{$patcity}', '{$patpostcode}', '{$patphone}', '{$doctorid}', '{$dob}');";
        return parent::query($sql);
    }

       public function deletePatient($patientid)
{
$sql = "DELETE
    FROM {$this->target}
    WHERE patientid='{$patientid}'";

return parent::query($sql);
}
    function getAllPatients()
    {
        $sql = "SELECT a.patientid, 
       concat(d.firstname, ' ', d.lastname) as fullname_doctor,
       a.firstname, a.lastname, a.patstreet, a.patcity, a.patpostcode, a.patphone, a.dob
       FROM patient as a
       INNER JOIN doctor as d
       on a.doctorid = d.doctorid;";
        return parent::query($sql);
    }
}

?>
试试这个:

public function deletePatient($patientid)
{
    $sql = "DELETE
        FROM {$this->target}
        WHERE patientid='{$patientid}'";

    echo $sql;
    die();

    return parent::query($sql);
}
您将能够确定SQL查询的创建是否正确

强制性警告:这不是进行查询的好方法


更新第一个

由于
deletePatient()
未触发,因此问题必须在源代码中较早出现

尝试删除

require_once("../views/AllPatientsView.php");
从DeletePatientController.php


更新第二个

if (isset($_GET['patientid']))  {
    $patientid->{$_GET['patientid']}();
}

$rpms->deletePatient($patientid); 
您没有使用$\u POST,请删除

if(设置($\u POST[“Delete”]){

并使用
$\u GET
访问
patientid


更新第三个

if (isset($_GET['patientid']))  {
    $patientid->{$_GET['patientid']}();
}

$rpms->deletePatient($patientid); 
应该是

if (isset($_GET['patientid']))  {
    $rpms->deletePatient($_GET['patientid']); 
}

更新第四个

由于查询不是问题的来源,请删除调试语句:

public function deletePatient($patientid)
{
    $sql = "DELETE
        FROM {$this->target}
        WHERE patientid='{$patientid}'";

    return parent::query($sql);
}

更新第五次会议

因为删除本身不是问题的一部分,所以下一步是调试代码的其他部分

$allpatients = $vapc->getAllPatients();

$_SESSION['patients'] = $allpatients;

...

$allpatients = $_SESSION['patients'];
不需要
$\u会话
欺骗。删除
$\u会话['patients']=$allpatients;
$allpatients=$\u会话['patients'];

然后,改变

if ($allpatients->num_rows > 0) {

你应该看到某种类型的
DAO
对象或mysql\u结果(无论
parent::query()
返回什么)


快速提示


您可以从.php文件中删除最后一个
?>
。这将使您避免在输出中出现尾随换行的奇怪标题错误。

您希望为一名患者删除多少数据行?1?2?3?如果您的代码是活代码,它正在运行,您将面临数据库操作的风险,并且您不会执行检查对于值,在将其放入SQL之前,您确实应该查找并实际使用它们。现在只需删除一行,我强烈建议您在删除SQL中添加一个
LIMIT 1
,这样您就不会无意中删除所有记录。或者甚至删除比您希望的更多的记录,以符合ICO或任何body在您的特定管辖范围内运行?我使用的是mysql\u real\u escape\u字符串。它包含在我的DAO页面中,但我没有将其添加到这里。查询语句不起作用。出现了相同的错误,并且没有回显$sql@Matthew“我希望你有?”马修你的评论听起来好像你没有使用威洛勒的代码,因为代码很清楚ly中有一个
die
语句,因此查询永远不会执行。@Matthew您可能需要在数据库中填充一些患者才能使代码正常工作。当您再次单击“删除”按钮时,它将触发。
if ($allpatients->num_rows > 0) {
var_dump($allpatients);
die();
if ($allpatients->num_rows > 0) {