パラメーター化されたクエリ
-
10-10-2019 - |
質問
現在、パラメータ化されたクエリを使用しているため、パラメータ化されたクエリを使用しています。
このコードブロックをパラメーター化されたバージョンに変換することで、誰かがいくつかのポインターを与えることができますか?
ありがとう。
if(isset($_GET['news_art_id']) && (!empty($_GET['news_art_id'])))
{
$news_art_id = htmlentities(strip_tags($_GET['news_art_id']));
$news_art_id = validate_intval($news_art_id);
//echo $news_art_id;
$_SESSION['news_art_id'] = $news_art_id;
// Assign value to status.
$onstatus = 1;
settype($onstatus, 'integer');
$query = 'SELECT M.id, M.j_surname, M.j_points_count, M.j_level, A.j_user_id,A.id, A.jart_title, A.jart_tags, A.jart_description, A.jart_createddate FROM jt_articles A, jt_members M WHERE M.id = A.j_user_id AND A.id = ' . check_db_query_id($news_art_id) . " AND A.jart_status = $onstatus;";
$result = mysql_query($query) or die('Something went wrong. ' . mysql_error());
$artrows = mysql_num_rows($result);
}
解決
あなたの場合、利点はありません。パラメーター化されたクエリにはDBへの2つの呼び出しが必要であることを忘れないでください。1つはクエリテンプレートを設定して解析するために、もう1つはクエリテンプレートパラメーションを入力し、通常はループ時に使用されます。したがって、この例では、ストアドプロシージャ(常に最良の選択)を呼び出すか、インラインSQLを使用して使用することをお勧めします http://php.net/manual/en/function.mysql-real-escape-string.php 適用できる場合。
他のヒント
一般的なルールは次のとおりです。すべての変数はバインドする必要があり、インライン変数はまったくありません。
所属していません StackOverflow