1

私がしたいのは、クエリで投稿変数を使用してデータベースにクエリを実行することです。それは本当に私にとってはうまくいきません.誰かがそれを正しく行う方法を知っていますか? これが私がこれまでに持っているものです。

$query = "SELECT column FROM `table` WHERE 'name' = '$_POST[checkname]'";
$result = mysqli_query($db, $query) or die ("no query");
$cod = mysqli_fetch($result);
echo $cod;

どんな助けでも大歓迎です。みんなありがとう。

4

3 に答える 3

5

mysqli は、SQL インジェクション攻撃から保護する準備済みステートメントをサポートしています。次のようになります。

/* Create a prepared statement */
$stmt = $mysqli -> prepare("SELECT column FROM table WHERE name=?");

/* Bind parameters */
$stmt -> bind_param("s", $_POST['checkname']);

/* Execute it */
$stmt -> execute();

/* Bind results */
$stmt -> bind_result($result);

/* Fetch the value */
$stmt -> fetch();

echo $result;

詳細については、マニュアルを確認してください。

コメントに応じて、簡単な要約:

  • では$stmt->prepare("...")、クエリを作成し、使用する変数の場所を「?」で保持します。

  • では$stmt -> bind_param(...)、変数を対応する疑問符にバインドしています。最初の引数は型で、次の引数は変数です。文字列と整数を使用している場合、括弧内は次のようになります"si", $stringVar, $intVar

  • $stmt -> bind_result(...)あなたは結果を何にバインドしているのかを述べています。クエリが名前と年齢の場合、括弧内は次のようになります$name, age

  • では$stmt->fetch()、結果を取得しています。複数の行が返された場合は、次のようにします。

    while($stmt->fetch()) { //コードはここに }

または、PDO を使用することもできます。次のようになります。

/* Create a prepared statement */
$stmt = $pdo->prepare("SELECT column FROM table WHERE name=:checkname");

/* Bind parameters */
$stmt->bindParam(':checkname', $_POST['checkname']);

/* Execute it */
$stmt->execute();

/* Fetch results */
$obj = $stmt->fetchObject();

echo $obj->column;

詳細については、マニュアルを確認してください。

于 2013-11-14T23:37:05.913 に答える
0

//それは適切です

// 仕事

if(isset($_POST['checkname'])) {

    $post = mysql_real_escape_string(trim($_POST['  checkname  ']));

    $query = "SELECT column FROM `table` WHERE name = '$post'";
    $result = mysqli_query($db, $query) or die ("no query");
    $cod = mysqli_fetch_all($result);
    echo implode($cod[0]);
    echo implode($cod[1]);//For particular cell
}
于 2017-06-28T22:31:02.987 に答える
-1

動作します。このように試してみてください

あなたのコードに従って...

if(isset($_POST['checkname']))
    {
        //to avoid SQL injections
        $post = mysql_real_escape_string(trim($_POST['checkname']));

        $query = "SELECT column FROM `table` WHERE name = '$post'";``
        $result = mysqli_query($db, $query) or die ("no query");
        $cod = mysqli_fetch($result);
        echo $cod;
    }
于 2013-11-15T00:44:21.943 に答える