1

小さなプロジェクトをMYSQLデータベースから にアップグレードしていますMYSQLiが、更新する機能が 3 つしかありません。

これは私の機能ですMYSQL

function id_from_username($username) {
    $username = sanitize ($username);
    return mysql_result(mysql_query("SELECT ´id´ FROM ´members´ WHERE ´username´ = '$username'"), 0, 'id');
}

上記の関数に移行しようとしたこのコードがありますが、使用できません:

$result = "SELECT * FROM `settings`";
 if (!$row = $db_connect->query($result)) {
     die('Oops, something went wrong during loading data! Error x010');
 }

試したコードを公開することになっていることはわかっていますが、問題は、MYSQLiをその特定の関数に移行する方法がよくわからないことです。

4

2 に答える 2

0

さて、あなたはこれを移行することを試みることができます:
https ://github.com/colshrapnel/safemysql/blob/master/safemysql.class.php

まず、スクリプトの早い段階で接続します。

include 'safemysql.class.php';
$opts = array(
    'user'    => 'user',
    'pass'    => 'pass',
    'db'      => 'db',
    'charset' => 'latin1',
);
$db = new SafeMySQL($opts);

次に、このように関数を記述します

function id_from_username($username) 
{
    global $db;
    return $db->getOne("SELECT id FROM members WHERE username = ?s", $username);
}

これは純粋なmysqliではなく、それに基づいて構築されたカスタムライブラリであることに注意してください。
最も重要な違いは、クエリでの役割に応じて、すべてのプレースホルダーにそのタイプをマークする必要があることです。たとえば、文字列の場合、文字$username列プレースホルダー(?s)が使用されました。

于 2013-01-16T17:15:07.890 に答える
0

私は正しい答えを見つけました、コードは次のようになっているはずです:

function id_from_username($username) {
    $username = sanitize($username);
    global $db_connect;

    $result = $db_connect->query("SELECT(id) FROM members WHERE username = '$username'");
    if (false === $result) {
        return false;
    }
    return ($result->num_rows === 1);
}

それは単純で、他のスクリプトを統合しなくてもコードに固執することができます:)

于 2013-01-20T13:52:00.483 に答える