0

次のコードを作成しましたが、何が問題なのかわかりません。助けていただければ幸いです。

<?php

$con = mysql_connect("host","user","password");

mysql_select_db("Stores", $con);

$street = mysql_query("SELECT Street FROM Sports WHERE Name = 'Nike'");

if (mysql_query("CREATE DATABASE $street", $con))
{
       echo "Success";
}

else
{
       echo "Fail";
}

mysql_close($con);

私は失敗し続けています。誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

4

このコードには多くの問題があります。

  1. これは最初はあまり関係がないかもしれませんが、php mysql 拡張機能はdeprecatedとマークされています。公式ドキュメントにも示されているように、mysqli または PDO に切り替えてください。非推奨とは、レガシー コードをサポートするためだけに存在し (新しいコードで使用すべきではないことを意味します)、将来のある時点でなくなることを意味します。私は PDO をお勧めします。PDO は、はるかに成熟し、柔軟で、普遍的なデータベース インターフェースであるためです。何かを学ぶことに時間を費やすつもりなら、PDO は間違いなく最適な方法です。準備されたステートメントに特に注意してください。さまざまなエスケープ関数をいじる必要なく、あらゆる種類の問題を回避するのに役立ちます。
  2. mysql_query はクエリ結果を (リソースとして) 返します。たとえば、ある種の fetch コマンドを使用して読み取る必要があります。PDO の query() メソッドについては、こちらのドキュメントを参照してください。
  3. クエリで見つけた通りにちなんで名付けられた新しいデータベースをサーバーに作成する理由がまったくわかりません。あなたはおそらくあなたの意図が何であるかを説明する必要があります.これはあなたがやりたいことをしないと確信しています.

コメントに基づいて編集:

私にとって、PDO に切り替える主な利点は次のとおりです。

  • 将来性: mysql_ 拡張機能を使用すると、ある日 php をアップグレードすると、拡張機能は永遠に失われます。これは、PDO ではすぐには起こりません。
  • 複数のデータベースのサポート: 従来、各データベース ブランドは、mysql の独自の拡張機能によって提供されていました。PDO はこれらすべての拡張機能を統合しているため、1 つの API で既存のほとんどの一般的なデータベースを操作できます。これらのデータベース間の方言の違いを解決するものではないことに注意してください。ただし、それらすべてに対して 1 つの API を使用できることは、間違いなく大きな利点です。
  • PDO は、SQL インジェクションなどのあらゆる種類のセキュリティ問題に対する防弾でありながら単純な保護として一般に認識されている準備済みステートメントの使用を積極的に推奨しています。 .

ユーザーごとにデータベースを作成することについての発言については、リレーショナル データベースに関するいくつかの入門資料を確認する必要があると思います。ほとんどの場合、アプリケーションは 1 つのデータベースに支えられており、ほとんどの場合、固定された一連のテーブル (店舗、顧客、注文、注文アイテムなど) とそれらの間の関係が含まれています。たとえば、店舗には多くの顧客がいて、それぞれが 1 つまたは複数の注文を持ち、それぞれに 1 つまたは複数のアイテムが含まれています。すべてのデータは、クエリを介してこれらの関係を利用し、結合を使用して、たとえば 1 つの注文に属するすべてのアイテムを抽出したり、1 人の顧客に関連付けられたすべての注文を一覧表示したりすることで取得されます。ここで重要なことは、最も例外的なケースを除いて、すべてのケースで1 つしかないということです。データ型ごとのテーブル。つまり、すべての顧客が 1 つのテーブルに格納され、すべての注文が 1 つのテーブルに格納されます。

すべてを読む時間はありませんが、databaseprimer.comは、これらの概念を理解するのに役立つかもしれません。

于 2013-01-02T02:06:49.440 に答える
3

mysql_queryリソースを返します。最初にデータを取得する必要がありますmysql_fetch_assoc($query)

クエリの後に次の行を追加します。

 $fetch = mysql_fetch_assoc($streets);

次に、2 番目のクエリで $streets を $fetch['street'] に変更します。

于 2013-01-02T02:05:30.337 に答える