这是错误还是编码错误?
Is this a bug or a coding error?
我正在处理页面 [events],它正在做最奇怪的事情。我正在尝试创建一个删除函数,它将字段名称(已删除)设置为 1。这意味着数据没有完全丢失,get-events ajax 页面获取 deleted = 0 的事件。
但是,当您单击该按钮时,它会显示一条成功消息,但不会删除。我已经在 SQLyog 中测试了 SQL 语句,以确保我的 SQL 是正确的。我检查了 PHP 错误日志并且没有错误.. 一切都匹配并且它应该可以正常工作,如果我将我的 SQL 语句从:
UPDATE events SET deleted = 1 WHERE eventid = :eventid
至:
UPDATE 1events SET deleted = 1 WHERE eventid = :eventid
然后它弹出一个错误,所以正在读取所有内容..它只是没有这样做..
这是我的 class 结构:
Class Events{
public function __construct($EventId = null, $Array = null) {
if (isset($EventId)) {
$database = new Connection();
$database = $database->Connect();
$statement = $database->Prepare("SELECT * FROM events WHERE EventId = :EventId");
$statement->execute(array("EventId" => $EventId));
$Array = $statement->fetch(PDO::FETCH_ASSOC);
}
if (isset($Array)) {
foreach ($Array as $Key => $Value) {
$this->$Key = $Value;
}
}
}
这是我的删除函数:
public function DeleteEvent() {
try {
$database = new Connection();
$database = $database->Connect();
$statement = $database->Prepare("UPDATE events SET deleted = 1 WHERE EventId = :EventId");
$statement->execute(array("EventId" => $this->EventId ));
$this->Success = 1;
$this->Message = 'Event Deleted';
} catch (PDOException $e) {
$this->Success = 0;
$this->Message = "Error!: " . $e->getMessage();
}
}
我删除ajax:
<?php
include $_SERVER['DOCUMENT_ROOT'].'/includes/galaxy-connect.php';
$a_json = array();
$a_json_row = array();
if (empty($_POST['EventId'])) {
$a_json_row["success"] = 0;
$a_json_row["message"] = 'Something Went Wrong';
} else {
$Event = new Events($_POST['EventId']);
$Event->DeleteEvent($_POST);
$a_json_row["success"] = $Event->Success;
$a_json_row["message"] = $Event->Message;
}
array_push($a_json, $a_json_row);
echo json_encode($a_json);
我的代码有什么问题吗?或者这是一个奇怪的错误?
您正在调用构造函数
$Event = new Events($_POST['EventId']);
并调用方法
$Event->DeleteEvent($_POST);
但是方法
public function DeleteEvent() {
try {
....
指的是$this->EventId
您的构造函数未填充 $this->EventId
或您的方法未正确获取一个参数 $_POST
(或两者都...)
事件的构造函数class至少应该像
class Events {
public function __construct($id) {
....
$this->EventId = $id;
答案很简单!当我想要一个对象时,我将数据作为数组传递!
如果有人遇到类似问题并发现它,请仔细检查您的代码将数据转换为对象,而不是数组:-)
我正在处理页面 [events],它正在做最奇怪的事情。我正在尝试创建一个删除函数,它将字段名称(已删除)设置为 1。这意味着数据没有完全丢失,get-events ajax 页面获取 deleted = 0 的事件。
但是,当您单击该按钮时,它会显示一条成功消息,但不会删除。我已经在 SQLyog 中测试了 SQL 语句,以确保我的 SQL 是正确的。我检查了 PHP 错误日志并且没有错误.. 一切都匹配并且它应该可以正常工作,如果我将我的 SQL 语句从:
UPDATE events SET deleted = 1 WHERE eventid = :eventid
至:
UPDATE 1events SET deleted = 1 WHERE eventid = :eventid
然后它弹出一个错误,所以正在读取所有内容..它只是没有这样做..
这是我的 class 结构:
Class Events{
public function __construct($EventId = null, $Array = null) {
if (isset($EventId)) {
$database = new Connection();
$database = $database->Connect();
$statement = $database->Prepare("SELECT * FROM events WHERE EventId = :EventId");
$statement->execute(array("EventId" => $EventId));
$Array = $statement->fetch(PDO::FETCH_ASSOC);
}
if (isset($Array)) {
foreach ($Array as $Key => $Value) {
$this->$Key = $Value;
}
}
}
这是我的删除函数:
public function DeleteEvent() {
try {
$database = new Connection();
$database = $database->Connect();
$statement = $database->Prepare("UPDATE events SET deleted = 1 WHERE EventId = :EventId");
$statement->execute(array("EventId" => $this->EventId ));
$this->Success = 1;
$this->Message = 'Event Deleted';
} catch (PDOException $e) {
$this->Success = 0;
$this->Message = "Error!: " . $e->getMessage();
}
}
我删除ajax:
<?php
include $_SERVER['DOCUMENT_ROOT'].'/includes/galaxy-connect.php';
$a_json = array();
$a_json_row = array();
if (empty($_POST['EventId'])) {
$a_json_row["success"] = 0;
$a_json_row["message"] = 'Something Went Wrong';
} else {
$Event = new Events($_POST['EventId']);
$Event->DeleteEvent($_POST);
$a_json_row["success"] = $Event->Success;
$a_json_row["message"] = $Event->Message;
}
array_push($a_json, $a_json_row);
echo json_encode($a_json);
我的代码有什么问题吗?或者这是一个奇怪的错误?
您正在调用构造函数
$Event = new Events($_POST['EventId']);
并调用方法
$Event->DeleteEvent($_POST);
但是方法
public function DeleteEvent() {
try {
....
指的是$this->EventId
您的构造函数未填充 $this->EventId
或您的方法未正确获取一个参数 $_POST
(或两者都...)
事件的构造函数class至少应该像
class Events {
public function __construct($id) {
....
$this->EventId = $id;
答案很简单!当我想要一个对象时,我将数据作为数组传递!
如果有人遇到类似问题并发现它,请仔细检查您的代码将数据转换为对象,而不是数组:-)