php - 使用 Php 从 Mysql 获取用户评论

标签 php mysql

我正在尝试允许用户对我网站上的个人资料发表评论。我有以下 php -- 已更新:

<?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
        ));
?>

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

HTML:

<input type='text' id='addComment' name='addComment' tabindex='3' value='Enter comment' />

给出的错误:

未指定 pID。当我尝试插入评论时。

最佳答案

您在插入语句中使用了单引号:

$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES($comm, $pID3, $cID)
');

使用这些简单的引号,$comm 将不会被计算 —— 文字 $comm 字符串将被发送到数据库—— - 结果可能出乎您的意料。


如果你想插入变量,你应该使用 double-quotes around your string .

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

相反,您应该在语句中使用占位符,然后在执行语句时将它们绑定(bind)到您的数据。


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

$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES(:comm, :pID3, :cID)
');

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

然后,当执行该语句时,您实际上会传递一些真实数据,以对应于占位符:

$sth3->执行(数组( ':通讯'=> $通讯, ':pID3' => $pID3, ':cID' => $cID, ));


附加说明:当您使用准备好的语句时,您不必使用 mysql_real_escape_string() (这不是 PDO 相关的函数,顺便说一句,和只应在使用 mysql_* 函数时使用):转义由准备好的语句机制本身处理。

关于php - 使用 Php 从 Mysql 获取用户评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605907/

相关文章:

php - 排序依据,如果某些相同,则按 SQL 中的其他内容排序

mysql - 将默认的 MYSQL JSON 值设置为 `{}` 还是 `NULL` 更好?

mysql - 如何修复 VB.Net 上 DataGridView 的双输出

PHP 注册和登录表单&电子邮件验证/邮件服务器设置

php - MySQL 分隔为 DIV 元素

mysql - 对所有属性使用 distinct

PHP PDO 语句 : Incorrect number of arguments for PROCEDURE

php - 数据库数组到预期的 javascript 格式

php - fatal error : Class 'SELF' not found

如果我提交使用当前 html 中的 ajax 响应附加的表单,javascript 验证失败