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