2012-06-20 11 views
6

これはかなり簡単です。 EDIT:質問を更新し、4番目のエコーを追加しました。ここでMySQLは正しいデータを取得していませんか? (PHP)

は、PHPのコードです:ここで

<?php 

$ratings="3"; 
$item="Inception"; 

$query="SELECT * FROM items WHERE item = '". $item ."' LIMIT 1"; 

echo $query; 

echo "<br />"; 

$result=mysql_query($query); 

echo $result; 

echo "<br />"; 

while ($row = mysql_fetch_array($result)) { 
    $item_id = $row['item_id']; 
    echo $item_id; 
    echo "<br />"; 
} 

    $query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')"; 

    echo $query_two; 
    $sql = mysql_query($query_two); 
    mysql_close(); 
?> 

は、すべてのエコーの持つウェブ出力されます:

SELECT * FROM items WHERE item = 'Inception' LIMIT 1 
Resource id #7 


INSERT INTO ratings (rating, item_id), VALUES (' 3 ', ' ') 

私の$のitem_idは空白になってどのように来ますか? (Resource idの3行目)

+0

です結果、あなたはそこで何が起こると思いましたか? – Wrikken

+0

私は間違った角度から質問していました。そして、ちょうど私自身の質問に答えました。 $ items_idはなぜ空白ですか?それは$ item_idでなければならないから - タイプミス。しかし、誰もが私の元の質問に答えました。ありがとう! – KickingLettuce

答えて

5

コードのこの部分は、それを生成します。

$result=mysql_query($query); 

echo $result; 

それはResource...を示し、それはresource型であるので、それは通常のタイプ(例えば、文字列またはint型)のようではありません、クエリのための特別なハンドラのちょうど一種ですそれで、それは印刷するために何も読めるものがありません。

クエリからデータを印刷する場合は、最初にフェッチする必要があります。

これらの機能は推奨されていませんので、使用することはお勧めしません。 phpマニュアルからの注意:

この拡張機能の使用はお勧めしません。代わりに、MySQLiまたはPDO_MySQL 拡張子を使用する必要があります。詳細については、MySQL:APIガイドの選択と の関連FAQを参照してください。この機能の代替 が含まれます:

mysqli_query()

PDO ::クエリを()

4

これは、データベースのIDとは関係ありません。

Result#7)この結果リソースは、PHPスクリプトの実行によって作成される第7のリソースであると言います。

2

リソースIDは、MySQLのクエリであることを実際のプロセス/オブジェクトから来ています。

$row = mysql_fetch_array($query); 

echo $row['item'] 
2

あなたは結果リソースで何かを実行する必要があります。

はあなたが必要とする結果を返します。

$result=mysql_query($query); 

//echo $result; 

$result_array = mysql_fetch_assoc($result); 

print_r($result_array); 

EDIT:私はあなたがあなたの質問を更新参照これを試してみてください。

item='Inception'クエリをMySQLで直接実行して、結果が期待通りであることを確認する必要があります。

3

また

$query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')"; 

あなたはVALUESカンマを持って

$query_two = "INSERT INTO ratings (rating, item_id) VALUES (' {$ratings} ', ' {$item_id} ')"; 

でなければなりません。

また、$item_idは空白のようです。あなたはitem = 'Inception'のデータがあるかどうかDBをチェックしてください。

については、Result#7については他の回答に従ってください。

+0

良いキャッチ、ありがとう! – KickingLettuce

+0

空白 'item_id'の別の理由:クエリ条件に一致する行が存在しない可能性があります。 – bfavaretto

1

単純な結果をエコーすることはできません。

while ($row = mysql_fetch_array($query)) { 
    echo $row['a_column'] . "<br />"; 
} 

またはオブジェクト::あなたは、例えば、配列に結果をフェッチする必要が

while ($variable = mysql_fetch_object($query) { 
$value = $variable->a_column; 
} 
echo $value; 

は、より多くの方法がありますが、これは、そのリソースが `エコー$からである二つの例だけ