0

本という名前のテーブルがある場合

Column 1 = current_user
, Column 2 = page_length
, Column 3 = author
, Column 4 = title

現在ログインしているユーザーに対応する列2、3、4からデータを選択したいと思います。次の構文は正しいですか?

<?
global $user;
$user_id=$user->name;
db_query('SELECT * FROM {book} WHERE current_user=$user_id', $page_length, $author,   $title); ?>
4

1 に答える 1

1

いくつかのヒント:

  1. SQLステートメントである文字列を引用符で囲む必要があります。
  2. ユーザー名はユーザー指定の文字列であるため、SQLインジェクションを防ぐためにパラメーターエスケープを使用する必要があります。
  3. 使用するために、ユーザー名を別の変数()に割り当てる必要はありません$user_id
  4. の戻り値から結果を取得する必要がありますdb_query

修正されたコード:

<?php
global $user;
$res = db_query("SELECT page_length, author, title FROM {book} WHERE current_user = '%s'", $user->name); 
$row = db_fetch_array($res);
// now $row['page_length'], $row['author'] and $row['title'] are filled in with values if the query was successful
?>
于 2013-01-21T22:24:23.093 に答える