首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Php从Mysql获取用户评论

问使用Php从Mysql获取用户评论
EN

Stack Overflow用户
提问于 2011-04-09 15:28:01
回答 4查看 277关注 0票数 1

我试图允许用户评论我的网站上的个人资料。我有以下php -更新的:

代码语言:javascript
复制
<?php
// Insert Comments into Database that user provides
$comm = mysql_real_escape_string($_POST['addComment']);
$pID4 = filter_input(INPUT_GET, 'pID', FILTER_SANITIZE_NUMBER_INT);
$cID = mysql_real_escape_string($_POST['courseInfoDD']);
        $username = "###";
        $password = "####";
        $pdo4 = new PDO('mysql:host=localhost;dbname=###', $username, $password);
        $pdo4->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sth3 = $pdo3->prepare('
        INSERT INTO Comment (info, pID, cID)
        VALUES(:info, :pID, :cID)
             ');
$sth3->execute(array(
            ':info' => $comm, ':pID' => $pID3, ':cID' => $cID
        ));
?>

DB表“评论” http://postimage.org/image/16sbr0jd0/ (版主请将此转换为显示图像)

HTML:

代码语言:javascript
复制
<input type='text' id='addComment' name='addComment' tabindex='3' value='Enter comment' />

错误给出:

No pID specified。当我试图插入评论的时候。

EN

回答 4

Stack Overflow用户

发布于 2011-04-09 15:37:07

在insert语句中使用单引号:

代码语言:javascript
复制
$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES($comm, $pID3, $cID)
');

使用这些简单的引号,$comm 将不会被计算为 --而文字$comm字符串将被发送到数据库--从而产生一些您可能并不期望的结果。

如果希望对变量进行内插,则应使用。

但是,当您尝试使用准备好的语句时,实际上不是您应该做的。

相反,应该在语句中使用占位符-然后,在执行语句时将这些占位符绑定到数据。

您的prepare看起来会有点像这样,我想:

代码语言:javascript
复制
$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES(:comm, :pID3, :cID)
');

注意:comm、:pID3和:cID占位符。

然后,在执行语句时,实际上将传递一些实际数据,以对应占位符:

$sth3->执行(数组( ':comm‘=> $comm,’:cID 3‘=> $pID3,':cID’=> $cID,);

附加注意:当您使用预先准备的语句时,您不必使用mysql_real_escape_string() (它不是与相关的函数,BTW,只应在使用`mysql*`_函数时使用):转义由准备好的语句机制本身处理。

票数 4
EN

Stack Overflow用户

发布于 2011-04-09 15:36:33

PDO准备语句的参数应如下所示:

代码语言:javascript
复制
$sth3 = $pdo3->prepare('
        INSERT INTO Comment (info, pID, cID)
        VALUES(:info, :pID, :cID)
             ');
$sth3->execute(array(
            ':info' => $comm, ':pID' => $pID3, ':cID' => $cID
        ));

首先为值设置“插槽”,然后在运行查询时提供它们。

票数 1
EN

Stack Overflow用户

发布于 2011-04-09 15:35:56

没有处理单引号字符串中的$variables。相反,使用双引号并为SQL语句本身添加引号:

代码语言:javascript
复制
$sth3 = $pdo3->prepare("
        INSERT INTO Comment (info, pID, cID)
        VALUES('$comm', '$pID3', '$cID')
             ");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5605907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档