此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
答案 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(?,?,?);');