-1

{$variable}例を使用して更新クエリを作成する方法:

$query="update subjects set values username='{$name}', hash_password='{$pass}' where id=1";
4

3 に答える 3

2

PDO接続を作成します。

// Usage:   $db = connectToDatabase($dbHost, $dbName, $dbUsername, $dbPassword);
// Pre:     $dbHost is the database hostname, 
//          $dbName is the name of the database itself,
//          $dbUsername is the username to access the database,
//          $dbPassword is the password for the user of the database.
// Post:    $db is an PDO connection to the database, based on the input parameters.
function connectToDatabase($dbHost, $dbName, $dbUsername, $dbPassword)
{
   try
    {
        return new PDO("mysql:host=$dbHost;dbname=$dbName;charset=UTF-8", $dbUsername, $dbPassword);
    }
    catch(PDOException $PDOexception)
    {
        exit("<p>An error ocurred: Can't connect to database. </p><p>More preciesly: ". $PDOexception->getMessage(). "</p>");
    }
}

次のように初期化します。

$host = 'localhost';
$user = 'root';
$databaseName = 'databaseName';
$pass = '';

そしてそれをこのように呼んでください:

$db = connectToDatabase($host, $databaseName, $user, $pass);

そして、次のような関数を使用します。

function update($db, $username, $password, $id)
{
    $query = "UPDATE subjects SET username = :username, hash_password = :password WHERE id = :id;";
    $statement = $db->prepare($query); // Prepare the query.
    $result = $statement->execute(array(
        ':username' => $username,
        ':password' => $password,
        ':id' => $id
    ));
    if($result)
    {
        return true;
    }
    return false
}

最後に、次のようなことができます。

$username = "john";
$password = "aefasdfasdfasrfe";
$id = 1;

$success = update($db, $username, $password, $id);

また、このようにすることでSQLインジェクションを回避します(ステートメントを準備し、ステートメントに変数を実行します)。

于 2013-03-22T21:10:17.680 に答える
1

そこでは使用できません。次のようvaluesにする必要があります。

$query="update subjects set username='{$name}', hash_password='{$pass}' where id=1";

ただし、変数をクエリに直接ダンプするのではなく、プリペアドステートメントを使用することをお勧めします。

于 2013-03-22T21:08:31.580 に答える
0

コンテキスト/データベースのエスケープについて詳しく知りたくない場合は、次のように使用してこのような問題を回避する方法を説明しますPDO

$pdo = new PDO('mysql:host=localhost;dbname=db', 'user', 'pw');

$pdo->prepare("update subjects set values username=?, hash_password=? where id=?")
    ->execute(array($user, $pass, 1)); 

参照:

于 2013-03-22T21:10:04.507 に答える