2017-06-10 2 views
0

config.phpファイルに関数を入れることはできますか?config.phpから値を取得するには?

のconfig.php:

<?php 

$dbhost="localhost"; 
$dbusername="user1"; 
$dbpassword="123456"; 
$dbname="dbname1"; 

$table_name="table1"; 

$db=mysql_connect($dbhost,$dbusername,$dbpassword) or die (mysql_error()); 
@mysql_select_db($dbname) or die (mysql_error()); 


function next_auto_increment(){ 
    $Result_auto_increment= mysql_query("SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$dbname' AND TABLE_NAME = '$table_name' "); 
    $row_auto_increment=mysql_fetch_array($Result_auto_increment); 
    $auto_increment = $row_auto_increment['AUTO_INCREMENT']; 
    return $auto_increment; 
} 

?> 

その後、私はこのような他のPHPからFUNCを呼び出す:

require_once "config.php"; 
$the_next_auto_increment = next_auto_increment(); 

が、機能は動作しません!

私は同じPHPファイル内の関数を置けば、それは動作しますが、config.phpの中にない

答えて

0

$ dbnameのと$ table_nameの変数はnext_auto_increment機能ブロックの範囲内ではありません。

function next_auto_increment($dbname, $table_name){ 
    ... 
}  

それとも、スコープにそれらを引くために、グローバルに使用することができます:

あなたは引数としてそれらを渡すことができ

function next_auto_increment(){ 
    global $dbname; 
    global $table_name; 

    ... 
} 
私も義務を述べる必要がある

、「あなたがする必要がありますmysql_connectではなくPDOを使用してください!

+0

私は前にPDO接続を使用していなかったので、私はそれを使用することはできません。しかし、**他のPHPファイルからatleast var $ dbusernameを取得する方法は?**私はちょうどそこからfatabasenameを取得したいです。私は他のPHPファイルに問題はありませんが、データベース名が必要です – Json

+0

@Json見てみましょう:http://php.net/manual/en/language.variables.scope.php – Drew

0

すべてのmysql_ *関数は廃止予定です。私はmysqli_ *関数も使用しません。ちょうどPDO - それは使用するほうがはるかに安全であり、何年にもわたって非難されることを心配する必要はありません。

しかし、これだけでスクリプトが失敗して何もしなくなる可能性があります。 php.iniがエラーを表示するように設定されていない場合、これが起こっているかどうかは分かりません。

すべてのmysql_ *関数をmysqli_ *に変更してみてください。いくつかの点を除いてほとんど同等です。 mysql_select_dbにはmysqli_select_db($ db、$ dbname)が必要です。 mysqli_queryも同様です。

また、グローバル。 next_auto_increment関数には、関数からアクセスできないグローバルに定義された変数がいくつかあります。何かのように:

global $db; 
global $dbname; 
global $table_name; 

See the following to get errors to show up for you while developing.

+0

私はPDOを見て、私はそれを知らない:( – Json

関連する問題