PHPとMySQLについて教えてください。

dfirstを使用してテーブル内のデータを取得したいのですが上手くいきません。

下記のようなテーブルを作成しました。。
テーブル名:tblitem

int(11)   varchar(4)   varchar(50)
----------------------------------------------------
no      itemno     itemname
----------------------------------------------------
1       a1       アルミ
2       a2       タイル
3       a3       ガラス
4       a4       カーテン

下記のソースでprint $name;とするとタイルをいう結果を得たいのですが上手くいきません。
$test="a2";
$name = dfirst("itemname", "tblitem", "itemno=$test", True);


下記の場合だとタイルと表示します。
$test="2";
$name = dfirst("itemname", "tblitem", "no=$test", True);

itemnoがvarchar型だからでしょうか?
解決策をご存知でしたら教えて頂きたいと思います。
もしdfirst以外でもやり方があれば教えて頂きたいと思います。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2006/11/18 20:44:53
  • 終了:2006/11/18 22:29:51

ベストアンサー

id:fonya3 No.2

fonya3回答回数238ベストアンサー獲得回数102006/11/18 21:34:17

ポイント200pt

PHPのマニュアル ( http://www.php.net/manual/ja/ ) に

dfirstという関数が見あたらなかったのですが、以下のソースで

どうでしょうか。

// DB接続に関する変数
$mysql_host = "host_name";
$mysql_user = "user_name";
$mysql_pass = "password";
// データベースに接続
$conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass) or die('Could not connect: ' . mysql_error());
mysql_select_db($mysql_db) or die('Could not select database');
// SQLクエリを投入する
$sql = "SELECT itemname FROM tblitem WHERE itemno='a2'";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
// SQLの結果をループして処理する
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    foreach ($line as $key=>$val) {
        if($key == 'itemname'){
            $name = $val;
        }
    }
}
// 結果セットを開放する
mysql_free_result($result);
// 接続を閉じる
mysql_close($conn);
id:moks

回答ありがとうございます。教えて頂いたソースで希望の結果を得ることが出来ました。

わざわざソースまで書いて頂き助かりました。

2006/11/18 22:29:16

その他の回答(1件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012006/11/18 20:59:41

ポイント35pt

変数を使っていきなり作ると解り辛くないですか?

$name = dfirst("itemname", "tblitem", "itemno=a2", True);

$name = dfirst("itemname", "tblitem", "itemno='a2'", True);

ではどうちがうかといったテストをしてみてください。

id:moks

回答ありがとうございます。再度検証してみます。

2006/11/18 22:27:19
id:fonya3 No.2

fonya3回答回数238ベストアンサー獲得回数102006/11/18 21:34:17ここでベストアンサー

ポイント200pt

PHPのマニュアル ( http://www.php.net/manual/ja/ ) に

dfirstという関数が見あたらなかったのですが、以下のソースで

どうでしょうか。

// DB接続に関する変数
$mysql_host = "host_name";
$mysql_user = "user_name";
$mysql_pass = "password";
// データベースに接続
$conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass) or die('Could not connect: ' . mysql_error());
mysql_select_db($mysql_db) or die('Could not select database');
// SQLクエリを投入する
$sql = "SELECT itemname FROM tblitem WHERE itemno='a2'";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
// SQLの結果をループして処理する
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    foreach ($line as $key=>$val) {
        if($key == 'itemname'){
            $name = $val;
        }
    }
}
// 結果セットを開放する
mysql_free_result($result);
// 接続を閉じる
mysql_close($conn);
id:moks

回答ありがとうございます。教えて頂いたソースで希望の結果を得ることが出来ました。

わざわざソースまで書いて頂き助かりました。

2006/11/18 22:29:16
  • id:bayan
    dfirst って PHP 標準の MySQL関数ではないですよね。。。
    Access VBA の関数に DFirst とか DLast っていうのが
    あるみたいですね。
    Access 感覚で操作できるようなライブラリを独自に
    用意されているのでしょうか。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません