我正在尝试使用PDO更新帖子并将其添加到自定义编码博客中。
我可以阅读和删除,但添加帖子或编辑它们在实时服务器上不起作用。
它在XAMPP上工作正常...
我确保在我的数据库上启用了PDO_mysql扩展。
不知道问题在哪里?
我的编辑POST代码如下:
<?php
//if form has been submitted process it
if(isset($_POST['submit'])){
//collect form data
extract($_POST);
//very basic validation
if($postID ==''){
$error[] = 'This post is missing a valid id!.';
}
if($postTitle ==''){
$error[] = 'Please enter the title.';
}
if($postDesc ==''){
$error[] = 'Please enter the description.';
}
if($postCont ==''){
$error[] = 'Please enter the content.';
}
if(!isset($error)){
try {
$postSlug = slug($postTitle);
//insert into database
$stmt = $db->prepare('UPDATE blog_posts_seo SET postTitle = :postTitle, postSlug = :postSlug, postDesc = :postDesc, postCont = :postCont WHERE postID = :postID') ;
$stmt->execute(array(
':postTitle' => $postTitle,
':postSlug' => $postSlug,
':postDesc' => $postDesc,
':postCont' => $postCont,
':postID' => $postID
));
//delete all items with the current postID
$stmt = $db->prepare('DELETE FROM blog_post_cats WHERE postID = :postID');
$stmt->execute(array(':postID' => $postID));
if(is_array($catID)){
foreach($_POST['catID'] as $catID){
$stmt = $db->prepare('INSERT INTO blog_post_cats (postID,catID)VALUES(:postID,:catID)');
$stmt->execute(array(
':postID' => $postID,
':catID' => $catID
));
}
}
//redirect to index page
header('Location: index.php?action=updated');
exit;
} catch(PDOException $e) {
echo $e->getMessage();
}
}
}
?>
<?php
//check for any errors
if(isset($error)){
foreach($error as $error){
echo $error.'<br />';
}
}
try {
$stmt = $db->prepare('SELECT postID, postTitle, postDesc, postCont FROM blog_posts_seo WHERE postID = :postID') ;
$stmt->execute(array(':postID' => $_GET['id']));
$row = $stmt->fetch();
} catch(PDOException $e) {
echo $e->getMessage();
}
?>
我的ADD POST代码是
<?php
//if form has been submitted process it
if(isset($_POST['submit'])){
//collect form data
extract($_POST);
//very basic validation
if($postTitle ==''){
$error[] = 'Please enter the title.';
}
if($postDesc ==''){
$error[] = 'Please enter the description.';
}
if($postCont ==''){
$error[] = 'Please enter the content.';
}
if(!isset($error)){
try {
$postSlug = slug($postTitle);
//insert into database
$stmt = $db->prepare('INSERT INTO blog_posts_seo (postTitle,postSlug,postDesc,postCont,postDate) VALUES (:postTitle, :postSlug, :postDesc, :postCont, :postDate)') ;
$stmt->execute(array(
':postTitle' => $postTitle,
':postSlug' => $postSlug,
':postDesc' => $postDesc,
':postCont' => $postCont,
':postDate' => date('Y-m-d H:i:s')
));
$postID = $db->lastInsertId();
//redirect to index page
header('Location: index.php?action=added');
exit;
} catch(PDOException $e) {
echo $e->getMessage();
}
}
}
//check for any errors
if(isset($error)){
foreach($error as $error){
echo '<p class="error">'.$error.'</p>';
}
}
?>
我是否应该检查MySQL数据库,或者我的代码中是否存在阻止我的CRUD在实时环境中工作的内容?
如前所述,完全相同的代码(配置文件除外)正在使用XAMPP。
答案 0 :(得分:0)
可能是服务器端的权限错误,因为您无法编辑(写入)文件或创建新文件。我建议检查数据库的用户权限。
当你说它不起作用时,它又会给你带来什么? 您是否尝试过var_dump或echo如果它作为查询工作,或者它根本不允许查询执行?
<强>更新强> 最后但并非最不重要的是,评论建议的配置文件应该是主要问题。这实际上取决于您如何配置文件以在服务器上工作。检查包含等。
答案 1 :(得分:0)
问题是您如何插入DATE
。
这是Insert, update and delete
之间唯一的区别。
最好不要通过PHP添加它,因为你要添加当前时间,你可以让数据库为你做。
':postDate' => date('Y-m-d H:i:s')
&lt; - 让db为你做默认参数设置为now()
或者只使用TIMESTAMP
可能是最好的。