2016-05-28 12 views
0

たぶん私は初心者ですが、PHPの最初の関数で何がうまくいかないのか分かりません。関数を使用する代わりにコードを貼り付けるとすべてが問題ないので、パラメータを正しく取っていないようです。 私はちょうどその名前を参照しているSQLテーブルからの内容を持つHTMLテーブルを生成しようとしています。ここでは簡略化されたコードです:php関数のパラメータでエラーが発生しました

[conexion.php]

<?php 

    $host = "localhost"; 
    $user = "root"; 
    $pw = ""; 
    $db = "complejo_turistico"; 
    $tabla = ""; 
    $con = mysqli_connect($host,$user,$pw) or die ("Problems connecting".mysqli_error($con)); 
    $selectDB = mysqli_select_db($con,$db); 

?> 

[index.phpの]

<?php 
include("init.php"); 
include("conexion.php"); 
include("tables.php"); 
?> 
<!DOCTYPE html> 
<body> 

    <?php 
     createTable("admin"); 
    ?> 

</body> 
</html> 

[tables.php]

<?php 

function createTable($table){ 


      if (mysqli_select_db(mysqli_connect("localhost","root",""),"complejo_turistico")) { 

      $select = mysqli_query(mysqli_connect("localhost","root",""),"SELECT * FROM ".$table.";"); 
     ?> 
     <table border="1"> 
      <tr> 
       <th>Code</th> 
       <th>Func</th> 
      </tr> 
      <?php 
      while ($sel = mysqli_fetch_array($select)) { 
       ?> 
       <tr> 
        <td><?php echo $sel['cod_emp'];?></td> 
        <td><?php echo $sel['function'];?></td> 

       </tr> 
       <?php 
      } 
      echo "</table>"; 
     } 
    } 

    ?> 

は、そして、ここでエラーです落ち込み:

警告:mysqli_fetch_array()は、パラメータ1は勿論であるライン23

およびライン23上/opt/lampp/htdocs/complejo/tables.phpで与えmysqli_result、ブール値である場合ながら配列のフェッチを期待しますブールに変換されたSQLクエリドロップエラーためと$アレイ選択が... fecthedできない理由...

私の意見では、それは関数内のパラメータ$表を取っていない、というのです。しかし、私はこれは$selectはブールであることを意味

+0

'conexion.php'に' $ con'が作成されていますか?それは有効な接続ですか?それはグローバルスコープにあるのか、 'conexion.php'にある関数の中で定義されていますか? – Sean

+0

'conexion.php'と' $ selectDB'はどこにありますか – RiggsFolly

+1

メインコードでデータベースに接続していますが、関数は悪い考えです。スクリプトごとに一度だけデータベースに接続する必要があります。 '$ con'をパラメータとして使用する必要がある関数に渡します。 – RiggsFolly

答えて

0

...コードであり何も悪いことを参照してください傾けます。これはmysli_query機能で発生します。使用している関数は、クエリが失敗した場合はfalseを返し、成功した場合はmysqli_resultオブジェクトを返します。

$conが正しいか、xamppが起動しているか、その時点でインターネットに接続しているかどうかを確認する必要があります。

$selectがfalseの場合、エラーチェックを回避することがある場合は、配列を取得しようとしないでください。

+1

しかし、前にも述べたように、関数呼び出しを置き換えるindex.phpの中に関数のコードを置くだけで、うまく動作します。 – juakiz

0

後でmysqli_select_dbを使用する代わりに、接続文字列で作業データベースを宣言してみてください。以下の例では、必要に応じてcharsetを設定できます。

$con = mysqli_connect($host,$user,$pw,$db) 
or die ("Problems connecting".mysqli_error($con)); 
mysqli_set_charset($con, "utf8"); 
+0

done、同じ問題 – juakiz

関連する問題