我正在努力学习PDO用于我的数据库连接,因为我已经知道这是最“未来的证据”。但是我在让最小的工作示例工作时遇到了问题。打开提交我得到两个错误42000.报告的错误在同一行($ stmt = $ db-> prepare(“INSERT INTO table_test('fieldsql')VALUES(:field)”);),但我有尝试了我认为可能在这条线上的不同变化而没有运气。我删除了用户名和密码详细信息。
谢谢!
<html>
<body>
<form method="post">
<table class="dd" width="100%" id="data">
<td>Field</td>
<td>:</td>
<td width="17%"><input type='textarea' name='field'/></td>
</table>
<input name='submit' type='submit' value='submit'/>
</form>
<?php
$db = new PDO('mysql:dbname=table_name;host=localhost', 'user', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
if(isset($_POST['submit']))
{
$field = $_POST['field'];
$stmt = $db->prepare("INSERT INTO table_test ('fieldsql') VALUES (:field)");
$stmt->execute( array('fieldsql' => $field) );
}
$link = null;
?>
</body>
</html>
为了完整性,错误是: 致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在''fieldsql'附近使用正确的语法。)第20行的C:\ wamp \ www \ sqlinject.php中第1行的VALUES(?)'
PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与MySQL服务器版本对应的手册,以便在''fieldsql'附近使用正确的语法。)第20行C:\ wamp \ www \ sqlinject.php第1行的VALUES(?)'
答案 0 :(得分:0)
这:
$stmt = $db->prepare("INSERT INTO `table_test`(`fieldsql`) VALUES(:field)");
$stmt->execute( array(':field' => $field) );