2016-07-29 7 views
2

Prepared Statementsを避けるために長い時間をかけて私は快適ゾーンを残し、すべてのサイトをmysqliに更新したいと思っています。 ..Preparedステートメントを使用したSELECT * FROMおよびmysqli_fetch_array

接続

$conn = mysqli_connect($host, $user, $password, $database)or die(mysqli_error($conn)); 

私のクエリのは、このように構築されたすべて:

$id = 1; 
$result = mysqli_query($conn, "SELECT * FROM users WHERE id = '$id'"); 
$row = mysqli_fetch_array($result); 

は、その後、私は必要なすべてのフィールドを印刷することができた:

Name: $row['name']; 
Email: $row['email']; 
Address: $row['address']; 
City: $row['city']; 
... 

私は簡単な方法でprepareexecutebindfetch結果にはいくつかの方法を試してみました、または私が使用したものと同様、それらのどれも私のために働くんしました。

私の声明は悪いですか?もし私がすべてのitensの前にすべてQueryまたはInsert私の声明は安全でないままになりますsanitize場合、私は意味ですか?

私は、準備された文をどのように使っても、結果を個別に印刷することができますか?$ row ['name]、$ row [' address ']、$ row [' city ' ] ...

わずか数THINGS

このコードは正常に動作を更新するには、私の接続はOKで、$ idが(私は私の質問に編集した)私のクエリの上に宣言されています。私の質問は、私は...声明準備mysqliのにこのコードを「変革」と、まだ個別に$行[「名前」]、$行[「アドレス」]のような結果を印刷することができることができる方法です

+0

どんなエラーが発生していますか?データベースに接続できますか? – Anshum

+0

@Anshum私はエラーが発生していない、このコードは完全に動作し、私は不足している情報(データベースとIDの宣言)で私の質問を更新しました。私の質問は、どのように私はこのコードをmysqli準備文に変換して、結果を個別に出力できるかです。 – suicidebilly

答えて

0
<?php 
$mysqli = new mysqli("localhost", "username", "password", "db_name"); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
$id =1; 
if ($stmt = $mysqli->prepare("SELECT name, email from users where id=?")) { 

    /* bind parameters for markers */ 
    $stmt->bind_param("d", $id); 

    /* execute query */ 
    $stmt->execute(); 

    $stmt->bind_result($name, $email); 

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

    printf("%s has email %s", $name, $email); 
    /* close statement */ 
    $stmt->close(); 
} 

?> 

助けてください

+0

私の質問が更新されました。コードは正常に動作しています。私の質問は、注入を防止し、クエリの実行をスピードアップするために、このステートメントをmysqli prepared statementに変換する方法です。 – suicidebilly

関連する問題