0
// inserting into DB from form

if (!empty($_POST['Title'])) {
    $t = mysqli_real_escape_string($dbc, ($_POST['Title']));
} else {
    $errors[] = 'Please enter a Headline title';
}

// Add the news to the database:

$q = 'INSERT INTO news ( Title, Content) VALUES (?, ?)';
$stmt = mysqli_prepare($dbc, $q);
mysqli_stmt_bind_param($stmt, 'ss', $t, $c);
mysqli_stmt_execute($stmt);

$t にアポストロフィが含まれている場合

We're awesome

としてDBに追加します

"we\'re awesome"

後で:

title = $t のクエリを実行するにはどうすればよいですか

$q = "SELECT * FROM news WHERE title= '$t'";

アポストロフィが SQL を効果的に遮断するため、クエリは失敗します

SELECT * FROM news WHERE title = ' we're awesome
4

2 に答える 2

2

エスケープするか、プリペアド ステートメントを使用できますが、両方を使用することはできません

于 2013-04-15T16:57:47.540 に答える
0

挿入で行ったように、検索で mysqli_real_escape_string を再度使用します。

$t = mysqli_real_escape_string($link,$t);
$q = "SELECT * FROM news WHERE title= '$t'";

それでおしまい。

于 2013-04-15T16:54:43.667 に答える