Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Php从Mysql获取用户评论_Php_Mysql - Fatal编程技术网

使用Php从Mysql获取用户评论

使用Php从Mysql获取用户评论,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_st

我正在尝试允许用户对我网站上的个人资料发表评论。我有以下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
        ));
?>

DB表“注释” (请版主将此转换为显示图片)

HTML:

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

给出错误:

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

未指定pID
。当我尝试插入注释时。

$单引号字符串中的变量未被处理。改为使用双引号,并为SQL语句本身添加引号:

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

未处理单引号字符串中的$变量。改为使用双引号,并为SQL语句本身添加引号:

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

我们的问题与mysql无关,与评论无关

这是基本的PHP字符串语法

如果希望在字符串中解释变量,请使用双引号


然而,您不应该直接将变量添加到查询中,而是将它们存储起来

我们的问题与mysql无关,与注释无关

这是基本的PHP字符串语法

如果希望在字符串中解释变量,请使用双引号


但是,您不应该直接将变量添加到查询中,而是将它们存储起来。

PDO prepared语句的参数应如下使用:

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

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

PDO prepared语句的参数应如下使用:

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

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

您在insert语句中使用单引号:

$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES($comm, $pID3, $cID)
');
使用这些简单的引号,
$comm
将不会被计算
——而文本
$comm
字符串将被发送到数据库——这可能会导致一些您不太期望的结果


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

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

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


您的
准备
看起来有点像这样,我想:

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

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

$sth3->执行(数组)( ':comm'=>$comm, “:pID3”=>$pID3, ':cID'=>$cID, ));



附加说明:当您使用准备好的语句时,您不必使用
mysql\u real\u escape\u string()
(顺便说一句,这不是一个与PDO相关的函数,只应在使用
mysql\u*
函数时使用):转义由准备好的语句mecanism本身处理。

您在insert语句中使用单引号:

$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES($comm, $pID3, $cID)
');
使用这些简单的引号,
$comm
将不会被计算
——而文本
$comm
字符串将被发送到数据库——这可能会导致一些您不太期望的结果


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

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

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


您的
准备
看起来有点像这样,我想:

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

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

$sth3->执行(数组)( ':comm'=>$comm, “:pID3”=>$pID3, ':cID'=>$cID, ));



附加说明:当您使用准备好的语句时,您不必使用
mysql\u real\u escape\u string()
(顺便说一句,这不是一个与PDO相关的函数,只应在使用
mysql\u*
函数时使用):转义由prepared语句mecanism本身处理。

考虑到他正在使用prepared语句,不应将值注入查询,而应在执行语句时对其进行绑定。考虑到他正在使用prepared语句,不应将值注入查询,当执行语句时,它们应该被绑定。如果我尝试此操作并尝试提交注释,它会抛出一个错误,即没有为“professor”找到“pID”。我是否应该在查询“WHERE pID=?”中添加此项?@user700070:No,WHERE不用于insert。看起来pID应该是URL的GET变量的一部分,如
/addcomment.php?pID=3
@user700070:是否将
?pID=3
添加到表单的操作中?应该这样做。虽然为了清晰起见,我建议您也将pID移到POST字段。如果我尝试此操作并尝试提交评论,它会抛出一个错误,即找不到“教授”的“pID”。我是否应该在查询“WHERE pID=?”中添加此项?@user700070:No,WHERE不用于insert。看起来pID应该是URL的GET变量的一部分,如
/addcomment.php?pID=3
@user700070:是否将
?pID=3
添加到表单的操作中?应该这样做。尽管为了清晰起见,我还是建议您将pID移到POST字段。请参阅我更新的代码,这个“prepare”方法似乎没有抓住“$pID3=filter\u input(input\u GET,'pID',filter\u SANITIZE\u NUMBER\u INT);”行中的pID其中$pID3准备为var。为什么不获取pID?请参阅我的更新代码,此“prepare”方法似乎没有获取行“$pID3=filter\u input(input\u GET,'pID',filter\u SANITIZE\u NUMBER\u INT);”中的pID其中$pID3是作为var准备的。为什么这不是