为什么插入INTO不起作用?腓

时间:2011-04-11 01:20:03

标签: php

//这是给出错误的文件,而不是

下面的表格
       <?php
        // Insert Comments into Database that user provides

<?php
// Insert Comments into Database that user provides
$comm = mysql_real_escape_string($_POST['addComment']);

// following line has changed:
$pID4 = filter_var( $_POST['pID'], FILTER_SANITIZE_STRING );

$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 );
$sth4 = $pdo4->prepare('INSERT INTO Comment (info, pID, cID) VALUES(?,?,?);'); 
$sth4->execute(array($comm, $pID4, $cID ));

?>

表格

<input type='text' id='addComment' name='addComment' tabindex='3' value='Enter comment' />
<input type='hidden' name='pID' value='<?php echo $pID ?>'>
</form>

已收到错误:

*No error is received upon load, but once I type something in and press enter it gives me a blank page saying 'no pID specified' ?? Please help!*

2 个答案:

答案 0 :(得分:4)

要直接回答您的问题,您需要通过表单操作将pID添加到请求数据中,但此参数将显示在$_GET数组而不是{{1} }

$_POST

或通过表单元素(将成为<form action="inc/q/prof.php?pID=<?php echo $pID ?>" method="post"> 数组的一部分)

$_POST

现在,进一步考虑......

在使用带有绑定参数的PDO预处理语句时,不需要应用db string escaping(<input type="hidden" name="pID" value="<?php echo $pID ?>"> )。绑定参数或值的行为会为您解决这个问题。


为了澄清下面的评论,你需要这样的东西......

根据mysql_real_escape_string()这样的网址,您在该网页上的表单应该包含以下隐藏元素

http://example.com/index.php?pID=842

答案 1 :(得分:0)

两个字:GET FIREBUG。在检查PHP脚本之前,您应该检查HTML表单。您可能无法正确回显表单。

我认为使用POST提交更安全,但绝对更清晰。

检查表单后,它应如下所示:

<form method="POST" action="form-process.php">
    <input type='text' id='addComment' name='addComment' tabindex='3' value='Enter comment' />
    <input type="hidden" name="courseInfoDD" value="XXX" id="courseInfoDD">
    <input type="hidden" name="pID" value="XXX" id="pID">
</form>

在提交脚本中,您可以使用$ _POST访问这些参数。但请记住,如果HTML表单上有空值,它将变为空变量。

您可以快速回显$ pID以查看其内容。

@Phil Brown对PDO是正确的。在将变量发送给处理程序之前,您不必转义变量。

希望它有所帮助!