PDO用户输入MWE

时间:2016-02-15 22:53:47

标签: php mysql pdo

我正在努力学习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(?)'

1 个答案:

答案 0 :(得分:0)

这:

$stmt = $db->prepare("INSERT INTO `table_test`(`fieldsql`) VALUES(:field)");
$stmt->execute( array(':field' => $field) );