2017-03-26 21 views
1

私は、特定のMySQLデータベース内のすべてのテーブルをphpで表示しようとしています。 私はこのすべてに非常に新しいですし、それのための解決策を見つけることができません。 「ファイルやディレクトリが見つかりません」というエラーを表示し続けます。特定のMySQLデータベース内のすべてのテーブルを表示

ここで私の間違いを指摘できる人は誰ですか? 非常に感謝しています!

<?php include "../inc/dbinfo.inc"; ?> 
<html> 
<body> 
<h2>LIST TABLES FROM DATABASE</h2> 
<?php 

// Create connection 
$conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection with the database failed: </br>" . $conn->connect_error); 
} 
echo "Connection established with the database! </br>"; 

// SQL to show tables 

$sql = "SHOW TABLES FROM paperlessdb"; 
$result = mysql_query($sql); 

if (!$result) { 
    echo "Database error, could not list tables.\n</br>"; 
    echo 'MySQL error: ' . mysql_error(); 
    exit; 
} 

while ($row = mysql_fetch_row($result)) { 
    echo "- {$row[0]}\n </br>"; 
} 

mysql_free_result($result); 
?> 
+1

もはい、レガシーコードの墓地を掘り続けます。 mysql_query()は1995年のもので、mysqliと互換性がありません。そして、あなたのエラー: "見つからなかったファイルやディレクトリ"、あなたはこのコードでそれを見ますか?私は、あなたがこのコードによって引き起こされる間違った結論に飛び込んだことを意味しています。 – Xorifelse

+0

'dbinfo.inc'ファイルのパスは確実ですか?それはアクセスされている唯一のファイルだと思われますか? –

+0

それで、私たちは、mysqlとmysqliが混じり合っていない3つの理由、欠落しているファイルと変更可能なqueyのエラー、という3つの理由があります。一つを選ぶ。 –

答えて

2

まず、手順またはオブジェクト指向のを使用してください。混乱しているので、両方の組み合わせではありません。すべて一緒に避けるために代わりにを使用してください。

正しく自動的に接続するときにデータベースを選択することができ、データベースへの接続:

const DB_DATABASE = 'paperlessdb'; 

$conn = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection with the database failed: </br>" . $conn->connect_error); 
} 

if($result = $conn->query('SHOW TABLES')){ 
    while($row = $conn->fetch_array($result)){ 
    $tables[] = $row[0]; 
    } 
} 

print_r($tables); 
+0

これは、私には最も適切できれいな答えのように見えます。私の答えはパッチのように見えます。あなたに工藤。 –

2

あなたは、データベースへの接続が、データベースを照会する減価償却を使用するようにを使用しています。

$conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD); 

$result = mysql_query($sql); 
while ($row = mysql_fetch_row($result)){} 

mysql_free_result($result); 

代わりmysqli_query()mysqli_fetch_array()を使用する必要があります。

もう少し複雑ですが、mysqlはデクリエーションされてPHP 7として削除されますので、飛び越す選択肢はありません。よくPDOのお尻をチェックしてください。私は個人的にはに行きますが、ほとんどの場合はより直感的です。

$sql = "SELECT table_name 
      FROM information_schema.tables 
     WHERE table_schema = 'paperlessdb'"; 

は、我々は、我々のデータベースに関するメタデータを格納するINFORMATION_SCHEMA DBからデータをフェッチしている、クエリ以下

$result = mysqli_query($conn,$sql); 
if(!$result){ 
    die('MySQL error: ' . mysqli_error($conn)); 
} 

while ($row = mysqli_fetch_row($result)) { 
    echo "- {$row[0]}\n </br>"; 
} 
+0

これは実際にファイルが見つからない場合には役立ちませんが、失敗する可能性も非常に高いです。 –

+1

そのすべての間に違いがあることは知りませんでした。ロットは学ぶ!しかし決定はある時点で私たちをそこに連れて行きます。私に正しい方向を指してくれてありがとう!とても有難い。 –

+0

学習曲線:)。真剣に、あなたがそこにいるので、あなたの人生をより楽にするためにmysqli prepared-statementやPDOを学ぶべきです(ok私はより安全です)。あなたの頭を包むためにしばらく時間がかかりますが、私の本では必須です。がんばり続ける。 –

2

用途:

それはのような、よりになります。

+1

sqlを修正します。クエリが実行されないという事実がありません。 – Xorifelse

+0

@ Xorifelse私はあなたを得ませんでした。 –

+0

これは私がテーブルについての情報を得るのに使うクエリですが、OPはファイルやフォルダが見つからないということを言って、mysqlとmysqliを混ぜています。だから私は@ Xorifelseはあなたが良いクエリを持っていることを意味しますが、OPが彼の頭を酷使している2つの理由がまだありません。 –

関連する問題