//这是给出错误的文件,而不是
下面的表格 <?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!*
答案 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是正确的。在将变量发送给处理程序之前,您不必转义变量。希望它有所帮助!