php - PHP/MySQL 请求:我不知道为什么 CREATE 不起作用
问题描述
我尝试为自己的 MySQL 数据库制作自定义 API。我有两张桌子:
CREATE TABLE `heroes` (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`realname` varchar(200) NOT NULL,
`rating` int(11) NOT NULL,
`teamaffiliation` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `remarks` (
`id` int(11) NOT NULL,
`author` varchar(256) NOT NULL,
`comment` varchar(10000) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
两者id
都是PRIMARY KEY
和AUTO_INCREMENT
我的 API 执行基本的 CRUD 操作,读取工作正常,但remarks
表上的创建有问题,我没有找到我的错误
DbOperation.php:
function createHero($name, $realname, $rating, $teamaffiliation){
$stmt = $this->con->prepare("INSERT INTO heroes (name, realname, rating, teamaffiliation) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssis", $name, $realname, $rating, $teamaffiliation);
if($stmt->execute())
return true;
return false;
}
function createRemark($author, $comment){
$stmt = $this->con->prepare("INSERT INTO remarks (author, comment) VALUES (?, ?)");
$stmt->bind_param("ssis", $author, $comment);
if($stmt->execute())
return true;
return false;
}
function getHeroes(){
$stmt = $this->con->prepare("SELECT id, name, realname, rating, teamaffiliation FROM heroes");
$stmt->execute();
$stmt->bind_result($id, $name, $realname, $rating, $teamaffiliation);
$heroes = array();
while($stmt->fetch()){
$hero = array();
$hero['id'] = $id;
$hero['name'] = $name;
$hero['realname'] = $realname;
$hero['rating'] = $rating;
$hero['teamaffiliation'] = $teamaffiliation;
array_push($heroes, $hero);
}
return $heroes;
}
function getRemarks(){
$stmt = $this->con->prepare("SELECT id, author, comment FROM remarks");
$stmt->execute();
$stmt->bind_result($id, $author, $comment);
$remarks = array();
while($stmt->fetch()){
$remark = array();
$remark['id'] = $id;
$remark['author'] = $author;
$remark['comment'] = $comment;
array_push($remarks, $remark);
}
return $remarks;
}
api.php:
case 'createhero':
isTheseParametersAvailable(array('name','realname','rating','teamaffiliation'));
$db = new DbOperation();
$result = $db->createHero(
$_POST['name'],
$_POST['realname'],
$_POST['rating'],
$_POST['teamaffiliation']
);
if($result){
$response['error'] = false;
$response['message'] = 'Hero addedd successfully';
$response['heroes'] = $db->getHeroes();
}else{
$response['error'] = true;
$response['message'] = 'Some error occurred please try again';
}
break;
case 'createremark':
isTheseParametersAvailable(array('author','comment'));
$db = new DbOperation();
$result = $db->createRemark(
$_POST['author'],
$_POST['comment']
);
if($result){
$response['error'] = false;
$response['message'] = 'Remark added successfully';
$response['remarks'] = $db->getRemarks();
}else{
$response['error'] = true;
//and we have the error message
$response['message'] = 'Some error occured, please try again';
}
break;
case 'getheroes':
$db = new DbOperation();
$response['error'] = false;
$response['message'] = 'Request successfully completed';
$response['heroes'] = $db->getHeroes();
break;
case 'getremarks':
$db = new DbOperation();
$response['error'] = false;
$response['message'] = 'Request successfully completed';
$response['remarks'] = $db->getRemarks();
break;
唯一不起作用的部分是创建评论的部分......
它向我展示了:{"error":true,"message":"Some error occured, please try again"}
而且我没发现有什么问题...
解决方案
推荐阅读
- css - Flexbox 双边距
- java - maven-clean-plugin 或其依赖项之一无法解析
- android - 当手指在滚动拇指中时是否可以只允许滚动?
- entity-framework - 有没有办法在支持字段上应用价值转换?
- django - 停止 Django 将时间转换为 UTC
- unity3d - Unity:将着色器应用于对象以弯曲其纹理
- sql - 在不同设定时间间隔内处于特定状态的 ID 计数
- excel - 如何按字母顺序和长度对列表进行排序
- visual-c++ - 使用 Cairo,我如何使用控制台的输入打开一个窗口并绘制线条?
- javascript - 等待 forEach 循环完成其中的异步调用