2017-01-29 2 views
-1

Я только что узнал об этом новом скрипте в моей базе данных, чтобы избежать инъекций mysql .. но по какой-то причине он не работает ... Мое имя диаграммы - это сообщения, а затем я получил идентификатор и сообщение как текст, который я хочу, чтобы прийти в базу данных ...Вставить скрипт функции php

Вот мой новый код:

<?php 
$meddelanden = $_POST['message']; 
$namn = $_SESSION['user']; 
include ("connect.php"); 
$sql = $con->prepare('INSERT INTO messages (message,namn) VALUES (?,?)'); 
$sql->bind_param("ss",$meddelanden,$namn); 
$sql->execute(); 
$sql->close(); 
$con->close(); 
?> 

<form action = "meddelanden.php" id = "fromen2" method = "post"> 
    <input type="text" name="message" id = "type" autocomplete="off" 
      placeholder="type your chat message"> 
    <input type="submit" name="submit" value="Send"> 
</form> 

Пожалуйста, объясните, что им делать неправильно, я не буду утверждать ответ, если вы только что сказали, что я должен делать вместо этого! Спасибо за любую помощь!

+1

Remove '' i' от $ sql-> bind_param ("си", $ meddelanden); ' –

+0

, что я получаю то вместо этого? вызвать si = строка вправо? –

+0

Один тип данных должен быть определен для каждого '?' Только – RiggsFolly

ответ

1

Вы должны заменить si на s, так как вы привязываете к нему только одну строку и не целые (если $meddelanden не является целым числом). Используйте вместо

$sql->bind_param("s",$meddelanden); 
+1

В нем говорится, что я должен избегать комментариев, таких как благодарность, но спасибо, дайте ясное объяснение! –

+1

В этом случае вы можете принять ответ или голос. :) @unknownduck –

+1

только то, что я сделал, не могу сказать, что у меня слишком низкий балл:/ –

0

S является строкой, I является целым числом. Поставив SI, вы указываете, что передаются две переменные.

Смежные вопросы