1

MySQLiクエリから値を出力するのに問題があります。これが私が使用しているdb接続クラスです。

class db
{
 public function  __construct() 
    {
    $this->mysqli = new mysqli('localhost', 'root','', 'database');
    if (mysqli_connect_errno())
    {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
}

public function Query($SQL)
{
    $this->SQL = $this->mysqli->real_escape_string($SQL);
    $this->Result = $this->mysqli->query($SQL);
    if ($this->Result == true)
    return true;
    else
    die('Problem with Query: ' . $this->SQL);
}

public function Get($field = NULL)
{
    if ($field == NULL)
    {
        $data = array();
        while ($row = $this->Result->fetch_assoc())
        {
            $data[] = $row;
        }
    }
    else
    {
        $row = $this->Result->fetch_assoc();
        $data = $row[$field];
    }

    $this->Result->close();
    return $data;
}

public function __destruct()
{
    $this->mysqli->close();
}
}

クエリの実行

$db = new db;
$db->Query("SELECT * FROM tblclients WHERE clientid = $this->id");
$result = $db->Get();
echo $result['clientid'];

エラーが発生します

PHP Notice:  Undefined index: clientid

ただし、実行すると値が$results配列に渡されることはわかっています

print_r ($result);

私はこれを返します

Array ( [0] => Array ( [clientid] => 2 [firstname] => John [lastname] => Doe [dob] => 1962-05-08))

その価値のために、私がecho $db->Get('firstname');すべてを試してみるとうまくいきます。しばらくの間、壁に頭をぶつけてきました。助けていただければ幸いです。

4

1 に答える 1

0

ご覧のとおり、別の配列内に配列があります。必要なものを入手するには、次のようにする必要があります。

$result[0]['clientid'];

したがって、ここで行っているのは、最初$resultにインデックスがの配列を含む変数を呼び出し[0]、次にこの配列にクエリの列名が含まれていることです(例:) ['clientid']

$result['clientid']したがって、基本的には、データベースからそれらのキーを含む配列を最初に呼び出すことによって、データベースからデータを取得するよりも深く掘り下げる必要があります。

その配列のネストを解除するには、次のようにします。

$result = $db->Get();
$normal_result = 0;

foreach ($result as $value)
{
    $normal_result = $value;
}

これはメソッド内で使用できるため、将来的にのみ通常の結果が得られます。

于 2013-02-15T21:17:55.250 に答える