- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先我应该说我开始学习 PDO 并尝试重写一些旧的我的代码。这是我在 jquery/ajax/pdo/mysql 评论系统的教程中找到的一个正在运行的评论系统。这是我正在尝试重写的 mysql_*
部分 -> 文件 submit.php
将评论提交到数据库。
$arr = array();
$validates = Comment::validate($arr);
if($validates)
{
/* Everything is OK, insert to database: */
mysql_query(" INSERT INTO comments(name,url,email,body)
VALUES (
'".$arr['name']."',
'".$arr['url']."',
'".$arr['email']."',
'".$arr['body']."'
)");
$arr['dt'] = date('r',time());
$arr['id'] = mysql_insert_id();
$arr = array_map('stripslashes',$arr);
$insertedComment = new Comment($arr);
/* Outputting the markup of the just-inserted comment: */
echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
}
else
{
/* Outputtng the error messages */
echo '{"status":0,"errors":'.json_encode($arr).'}';
}
这是我对这段代码的尝试。
$pdo = Database::connect();
$arr = array();
$validates = Comment::validate($arr);
if($validates)
{
/* Everything is OK, insert to database: */
$sql = $pdo->prepare("INSERT INTO comments ( name,url,email,body )
VALUES (:name, :url, :email, :body)");
$sql->execute(array(
':name' => $name,
':url' => $url,
':email' => $email,
':body' => $body
));
$arr['dt'] = date('r',time());
$arr['id'] = $pdo->lastInsertId();
$arr = array_map('stripslashes',$arr);
$insertedComment = new Comment($arr);
/* Outputting the markup of the just-inserted comment: */
echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
}
else
{
/* Outputtng the error messages */
echo '{"status":0,"errors":'.json_encode($arr).'}';
}
当我点击按钮 提交
时什么也没有发生。没有向数据库中插入任何内容。并且按钮变为非事件状态。
如果需要,我也可以显示 javascript 部分或表单。谢谢
更新:这是 comment.class.php,它也包含在 submit.php 中
class Comment
{
private $data = array();
public function __construct($row)
{
/*
/ The constructor
*/
$this->data = $row;
}
public function markup()
{
// this just output the comment on page nothing special some html
}
public static function validate(&$arr)
{
$errors = array();
$data = array();
// Using the filter_input function introduced in PHP 5.2.0
if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
{
$errors['email'] = 'Wrong email.';
}
if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
{
// If the URL field was not populated with a valid URL,
// act as if no URL was entered at all:
$url = '';
}
// Using the filter with a custom callback function:
if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
{
$errors['body'] = 'Please enter your comment.';
}
if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
{
$errors['name'] = 'Please enter your name.';
}
if(!empty($errors)){
// If there are errors, copy the $errors array to $arr:
$arr = $errors;
return false;
}
// If the data is valid, sanitize all the data and copy it to $arr:
foreach($data as $k=>$v){
$arr[$k] = mysql_real_escape_string($v);
}
$arr['email'] = strtolower(trim($arr['email']));
return true;
}
private static function validate_text($str)
{
if(mb_strlen($str,'utf8')<1)
return false;
$str = nl2br(htmlspecialchars($str));
// Remove the new line characters that are left
$str = str_replace(array(chr(10),chr(13)),'',$str);
return $str;
}
}
最佳答案
不知道数组$arr = array();
的来源,但是在insert查询之前赋值为null。所以这意味着,从字面上看,您没有向数据库中插入任何内容。所以好好检查你的阵列,也许它就像
$arr = array('name'=>'我的名字', 'url'=>'url', 'email'=>'我的邮箱', 'body'=>'评论');
如果您的数组没有任何问题,那么我认为您缺少数组的键。您可以将数组值存储到变量中或直接使用它们。所以使用 ,
$pdo = Database::connect();
$arr = array();
$validates = Comment::validate($arr);
if($validates)
{
/* Everything is OK, insert to database: */
$sql = $pdo->prepare("INSERT INTO comments ( name,url,email,body )
VALUES (:name, :url, :email, :body)");
$sql->execute(array(
':name' => $arr['name'],
':url' => $arr['url'],
':email' => $arr['email'],
':body' => $arr['body']
));
$arr['dt'] = date('r',time());
$arr['id'] = $pdo->lastInsertId();
$arr = array_map('stripslashes',$arr);
$insertedComment = new Comment($arr);
/* Outputting the markup of the just-inserted comment: */
echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
}
else
{
/* Outputtng the error messages */
echo '{"status":0,"errors":'.json_encode($arr).'}';
}
希望对您有所帮助。
关于php - 尝试将 mysql_* 重写为 pdo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30975930/
自从我在服务器上将 PHP 更新到 PHP 5.5 后,我想使用 PDO 而不是 mysql_ 重写一个项目。在这个项目中,我有一个 Controller 和一个模型(当然还有一个 View ,但这并
我的一个托管服务器不支持 PDO。有吗mysql_与 PDO prepare() 具有相同功能的命令和execute() ? 我正在寻找参数替换功能,即 VALUES (?, ?) . 最佳答案 您可
这个问题在这里已经有了答案: Why shouldn't I use mysql_* functions in PHP? (14 个答案) 关闭 6 年前。 我听说 mysql_ 扩展在当前的 PH
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
在 php.net 网站上,他们说那些在 php5 或更高版本旁边使用 mysql4.1 的人必须使用非常“MYSQLI_”而不是“MYSQL_”。 他只想知道一件事,它会影响站点的性能,站点的几个问
当我学习 php 时,我从显然较旧的指南中学习并且一直在使用 mysql_ 函数。我正在将所有内容切换到 PDO,我有一个我真的想保留的功能,但我不太清楚如何更改它。这是 mysql_ 函数。 fun
首先我应该说我开始学习 PDO 并尝试重写一些旧的我的代码。这是我在 jquery/ajax/pdo/mysql 评论系统的教程中找到的一个正在运行的评论系统。这是我正在尝试重写的 mysql_* 部
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource
我的 SQL 数据库中有一张表,该表有两个字段,一个用于 ID,另一个用于整数。我想获取整数字段中的值,其中 id 等于我传入的特定数字。id 字段称为“id”,整数字段称为“loglevel”。这是
我只想检查 $lectureName 显示的位置是否存在一行。如果行中某处确实存在 $lectureName,我希望函数返回“已分配”,如果没有,则它应该返回“可用”。这就是我所拥有的。我很确定它一团
我写了一些代码,这些代码经常使用 mysqli_。问题是我现在需要将此代码与使用 mysql_ 的代码集成,并处理连接、身份验证等。我不想创建第二个连接,但是 mysql_ 缺少一些功能,例如,准备好
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
我需要用 PDO 的 mysql_* 函数重写我的 php 代码,所以我有: 我尝试写这个,但使用像这样的 PDO 函数: setAttribute(PDO::ATTR_ERRMODE, PDO::
想要改进这篇文章吗?提供此问题的详细答案,包括引用和解释为什么你的答案是正确的。不够详细的答案可能会被编辑或删除。 不应该使用 mysql_* 的技术原因是什么?功能? (例如 mysql_query
想要改进这篇文章吗?提供此问题的详细答案,包括引用和解释为什么你的答案是正确的。不够详细的答案可能会被编辑或删除。 不应该使用 mysql_* 的技术原因是什么?功能? (例如 mysql_query
想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 的技术原因是什么?职能? (例如 mysql_
我是一名优秀的程序员,十分优秀!