我有這種形式與ajax腳本連接,當我提交長文本結果不保存在數據庫中(在posts表上,我有post_content列作爲「longtext」類型)。當我提交一些簡單的像「你好世界」)結果正確保存。當我用mysqli的,我已經解決了這個問題與這行代碼(使用mysqli_real_escape_string):PDO插入不工作
//$insert_posts = "INSERT INTO posts (post_content,post_date,post_topic,post_by_uid) VALUES ('".mysqli_real_escape_string($conn,$_POST['val'])."',NOW(),$id,'".$_SESSION['uid']."')";
但現在有PDO,我不能。我試過這個:$conn->quote($reply)
但它沒有奏效。
<script>
function saveEditorTrigger()
{
for (instance in CKEDITOR.instances) CKEDITOR.instances[instance].updateElement();
}
</script>
<script>
\t $(function() {
\t \t
$('form').on('submit', function (e) {
\t \t saveEditorTrigger();
\t \t var str = CKEDITOR.instances['reply-post'].getData();
var id = <?php echo $_GET['id']; ?>;
\t \t e.preventDefault();
$.ajax({
type: 'post',
url: 'post.php',
data:{ val : str, id : id },
success: function (data) {
alert('Your answer is submitted');
location.replace("topic.php?id=<?php echo $_GET['id']; ?>");
\t \t \t }
});
});
});
</script>
<form id="form" >
\t \t \t \t <br>
\t \t \t \t <textarea name="reply-post"></textarea>
\t \t \t \t \t \t <script>
\t \t \t \t \t \t CKEDITOR.replace("reply-post");
</script>
\t \t \t \t \t <input type="submit" name="submit" value="submit">
\t \t \t \t </form>
的post.php中的文件:
<?php
include 'dbh.php';
session_start();
$reply = $_POST['val'];
$id = $_POST['id'] ;
$insert_posts = $conn -> prepare("INSERT INTO posts (post_content,post_date,post_topic,post_by_uid) VALUES ('".$reply."',NOW(),$id,'".$_SESSION['uid']."')");
//$insert_posts = "INSERT INTO posts (post_content,post_date,post_topic,post_by_uid) VALUES ('".mysqli_real_escape_string($conn,$_POST['val'])."',NOW(),$id,'".$_SESSION['uid']."')";
$insert_posts -> execute();
?>
我的問題是什麼我做錯了什麼?有任何想法嗎?
瞭解有關[PDO] [製備](http://en.wikipedia.org/wiki/Prepared_statement)語句(http://php.net/manual/en/ pdo.prepared-statements.php)。您也可以避免潛在的SQL注入攻擊! PDO,[非常簡單](http://jayblanchard.net/demystifying_php_pdo.html)。 –
好吧,對於初學者...您沒有正確使用PDO。 PDO的要點是不要將您插入到查詢中的值放入您的查詢中,並將它們作爲數組傳遞給插入對象。 – Dimi
你的代碼*對SQL注入*是開放的*。當你檢查錯誤時,數據庫*可能*告訴你一個語法錯誤。糾正SQL注入問題,這個問題可能會變得沒有意義。 – David