2016-06-15 11 views
0

mysqli trough PHPを使用してデータベースにテキストを挿入しようとしています。次のように'記号を使用するとPHPの挿入が機能しない

私のinsert文は次のとおりです。

$userID="1"; 
$description="Hi! It's been a while..."; //For example... 

$sql = "INSERT INTO projecten (user_ref, description) 
VALUES ('$userID','$description')"; 

if ($conn->query($sql) === TRUE) { 
    //redirect to right page 
} else { 
    //error message... 
} 

問題: は、私はいつも私が試した今、「TSはされて「」私のSQL構文に近い権利はない何かがあるというエラーメッセージが表示されます'シンボルを削除してコードが機能しますが、ユーザーが入力したいものを入力できるようにする必要があります...

私はこれについて何かできますか?

ありがとうございます!

+2

使用 '読むbind_param'を形成http://php.net/manual/en/mysqli-stmt.bind-paramを防ぐことができます.php – Saty

+0

SQLのエスケープと準備されたステートメントを読むと、それはあなたの問題を解決し、将来的に膨大な量のセキュリティ問題を防ぐことができます。 – iainn

+0

いいえ、SQLをエスケープしないでください.2016年です。準備されたstatemtnesを使用してください。あなたはSQLインジェクション攻撃をしようとしていない限り、 –

答えて

1

使用bind_paramこれは、これらすべての文字列を処理し、あなたは、SQLインジェクション

$userID = "1"; 
$description = "Hi! It's been a while..."; //For example... 


$stmt = $conn->prepare("INSERT INTO projecten (`user_ref`, `description`) VALUES (?, ?)"); 
$stmt->bind_param('is', $userID, $description); 

/* execute prepared statement */ 
$stmt->execute(); 

printf("%d Row inserted.\n", $stmt->affected_rows); 

/* close statement and connection */ 
$stmt->close(); 
+0

'is'は何ですか? – CoderYordi

+0

各charは変数の型を表します。最初のものは整数なので、 "i"、2番目の文字列は "s"です。 Satyはbid_paramページへのリンクを与えました。このページには、それがどのように動作するかについての質問と、あなたが持っている質問があります。 –

+0

@PootieTangさて、このリンクが表示されます:)このエラーが発生したため、ページをチェックアウトします:致命的なエラー:/ home/u889413109/public_html/testsite /にあるオブジェクト以外のオブジェクトのbind_param()行154 – CoderYordi

関連する問題