允许用户根据(2)表提交评论?

时间:2011-04-25 01:03:40

标签: php mysql

此Php文件上的错误:

    <?php // Insert Comments into Database that user provides
        //Get values of fields entered
        $comment = $_POST['addComment'];
        $pID4 = filter_var( $_POST['pID'], FILTER_SANITIZE_STRING );
        $cID = $_POST['prefix'] . $_POST['code'];
    require_once('inc/dbc1.php');
    $pdo4 = new PDO('mysql:host=###;dbname=####', $username, $password);
    $pdo4->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
 /* Error on this line --> */   $sth4 = $pdo4->prepare('INSERT INTO Comment (info, pID, cID) VALUES('$comment',?,?);');
    $sth4->execute(array($comment, $pID4, $cID));  
    ?>

错误:语法错误,意外发生T_VARIABLE

3 个答案:

答案 0 :(得分:0)

从我所看到的情况来看,info字段是必需的(即不能为空)但是我看不到你在哪里设置$ info变量以传递给预准备语句。

尝试在调试模式下重启mysql,这应该允许您运行确切的查询 - 然后您可以查看它是MySQL问题还是PHP问题。

答案 1 :(得分:0)

由于格式错误的字符串输出,您没有将pID输出到表单中:

echo "<option>".$row3['prefix']." ".$row3['code']."</option>"; }
echo "</select>
<input type='text' id='addComment' name='addComment' tabindex='3' value='Enter comment' />
<input type='hidden' name='pID' value='<?php echo $pID4; ?>'>
                                       ^^^^^^^^^^^^^^^^^^^^^ here
</form>";     

在我指出的那一点上,你仍然在'echo'命令的双引号字符串中,因此PHP永远不会被执行,因为它在字符串中。你最终得到的是一个看起来像

的HTML标签
...<input type="hidden' name='pID' value='<?php echo 1234;?>'>...
浏览器中的

,这不是你想要的。

你真的需要“打破”PHP模式,或使用HEREDOCs。要么让你输出多行文本块,而不必通过混合引用样式跳过箍,也让任何像样的语法高亮编辑器捕获这样的错误。

答案 2 :(得分:0)

$pdo4->prepare('INSERT INTO Comment (info, pID, cID) VALUES('.$comment.',?,?);');

那是错的。用这个:

 $pdo4->prepare('INSERT INTO Comment (info, pID, cID) VALUES(?,?,?);');