0

以下のmysqlコードをPDOステートメントに書き込むのを手伝っていただければ幸いです。

     $sql  = "SELECT * FROM node WHERE node_name='$nodename'";

     $result = mysql_query($sql);

PDO::query マニュアルを読むと、このコードが見つかりました

      <?php
      $connection = new pdo("sqlite:file.sq3");
      $query="SELECT * FROM table";
      $result = $connection->query($query);
      $row = $result->fetch(PDO::FETCH_ASSOC);
      print_r($row);
      ?>

「sqlite:file.sq3」と「(PDO::FETCH_ASSOC)」の関数は何ですか?

4

3 に答える 3

0

その行はあなたのSQLファイルを指していますが、そのための機能はありません。PDO 接続が開き、さらにクエリを実行できます。

$connection = new pdo("sqlite:/path/to/sql/file.sq3");

PDO::FETCH_ASSOCfetch()テーブルから連想配列を取得するように関数に指示します。

于 2013-07-10T01:50:42.237 に答える
0

次のようにデータベースに接続します。

try {
$db = new PDO("sqlite:file.sq3");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
       echo 'Error : <br>' . $e->getMessage();
}

PS: try と catch は必要ありませんが、以前はエラーを取得して、必要に応じて適切に処理していました。

次に、次のようにクエリします。

 $db->query(SELECT * FROM node WHERE node_name='$nodename'");

そして、次のようにフェッチします:

 $query = $db->query(SELECT * FROM node WHERE node_name='$nodename'");
 $row   = $query->fetch(PDO::FETCH_OBJ);

そして今、あなた$row->nameは例えば

PDO::FETCH の詳細はこちら

  • PDO::FETCH_ASSOC : 結果セットで返される列名でインデックス付けされた配列を返します

  • PDO::FETCH_BOTH (デフォルト): 結果セットで返されるように、列名と 0 から始まる列番号の両方でインデックス付けされた配列を返します

  • PDO::FETCH_BOUND
    : TRUE を返し、結果セット内の列の値を PDOStatement::bindColumn() メソッドでバインドされた PHP 変数に割り当てます

  • PDO::FETCH_CLASS : 要求されたクラスの新しいインスタンスを返し、結果セットの列をクラスの名前付きプロパティにマッピングします
    。fetch_style に PDO::FETCH_CLASSTYPE (例:
    PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE)が含まれている場合、クラスの名前は
    最初の列の値から決定されます。

  • PDO::FETCH_INTO
    : 要求されたクラスの既存のインスタンスを更新し、結果セットの列を クラスの名前付きプロパティにマッピングします

  • PDO::FETCH_LAZY : PDO::FETCH_BOTH と PDO::FETCH_OBJ を結合し、アクセス時にオブジェクト変数名を作成します

  • PDO::FETCH_NUM : 列 0 から始まる、結果セットで返される列番号でインデックス付けされた配列を返します

  • PDO::FETCH_OBJ : 結果セットで返された列名に対応するプロパティ名を持つ匿名オブジェクトを返します

于 2013-07-10T01:53:21.073 に答える