関数php内のデータベースに接続できません

私は私のデータベースに接続し、私の値を取得するPHPファイルがありますが、

<?
  $dbconn = mysqli_connect(..,..,..);
  $query = ...
  $result = ...
  ...
?>

すべてがこのコードで素晴らしいですが、私はPHP関数の中にブロックを置くとき、私はこれを試して、私の値(プロシージャの呼び出しを実行することはできませんでした)を取得することはできません:

<?
     $dbconn = mysqli_connect(...,...,...);
     function drawTable()
    {
       $query = ...
       $result = ...
       ....
    }
   drawTable();


?>
1
$ queryと$ resultを関数から定義する必要がありますか?
追加された 著者 Sandeep Bansal,
「...」ではなくコードを表示した場合、スコープの問題であることがわかりました。
追加された 著者 symcbean,
いいえクエリは関数内になければなりません。関数を呼び出すたびにcozが呼び出され、データベースからデータを取得します
追加された 著者 Grace,

3 答え

これは、関数スコープで外部変数が表示されないためです。

$ dbconn変数は、グローバルにするか、引数として渡すことで到達できます。

global $dbconn; 
$dbconn = mysqli_connect(...,...,...);
function drawTable()
{
   global $dbconn;
   $query = ...
   $result = ...
   ....
}
drawTable();

または

 $dbconn = mysqli_connect(...,...,...);
 function drawTable($dbconn)
{
   $query = ...
   $result = ...
   ....
}
drawTable($dbconn);
3
追加された
あなたのクエリービルディングが影響を受ける可能性があるのでdie( "select query - "を実行できませんでした)をdie( "select query:"を実行できませんでした)を使ってdie( "var_export($ query、true)それを構築するために他の変数を使用している場合は、関数スコープです。
追加された 著者 Skrol29,
また、unset変数のようなPHPエラーを確実にキャッチするために、error_reporting(E_ALL || E_STRICT)というコードを追加してください。
追加された 著者 Skrol29,
彼らは働いていない、私にいくつかのコードを投稿する必要がある場合、私に知らせてください、ありがとう
追加された 著者 Grace,

方法1:グローバルな $ dbconn にアクセスします。

$dbconn = mysqli_connect(...,...,...);
function drawTable()
{
    global $dbconn;
    $query = ...
    $result = ...
    ....
}
drawTable();

方法2: $ dbconn をパラメータとして渡します。

$dbconn = mysqli_connect(...,...,...);
function drawTable($dbconn)
{
    $query = ...
    $result = ...
    ....
}
drawTable($dbconn);
0
追加された
「働いていない」と記述し、もしあればエラーメッセージを出してください。
追加された 著者 xdazz,
@Graceので、あなたのクエリは間違っていますか?
追加された 著者 xdazz,
@Grace mysqli_error()は何を言っていますか?
追加された 著者 xdazz,
あなたのコード全体を投稿してください。 mysqli_error($ dbconn)を使用します。
追加された 著者 xdazz,
彼らは働いていない、私にいくつかのコードを投稿する必要がある場合、私に知らせてください、ありがとう
追加された 著者 Grace,
私はこのコードを持っています:$ result = mysqli_query($ dbconn、$ query)またはdie( "選択クエリを実行できませんでした - " mysqli_error());と私はエラーが表示されます:選択クエリを実行することができませんでした -
追加された 著者 Grace,
関数の部分がなくても(私の記事で説明したように)、私のクエリはうまく動いていますが、
追加された 著者 Grace,
何も、emtpy文字列
追加された 著者 Grace,

関数内で $ dbconn 変数を使用している場合、正しいスコープにないので失敗します。 $ dbconn 変数を関数に渡して、関数を使用できるようにします。

0
追加された
より多くのコードが役に立ちます。問題が何であるかを確認できるように更新されたコードを投稿する
追加された 著者 JohnP,
彼らは働いていない、私にいくつかのコードを投稿する必要がある場合、私に知らせてください、ありがとう
追加された 著者 Grace,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com