(外部includeや関数化しないで普通に書けば動いてました。
includeや関数化したからできなくなったんです)
【a.php】←動かすphpファイル
<?php
include(dirname(__FILE__)."/include.php");
connect();
insert("あ");
?>
【include.php】←ホスト名やpassやconnect関数を書いたファイル
<?php
$hostname = "localhost";
$uname = "root";
$upass = "****";
$dbname = "database";
//ここから接続関数
function connect()
{
mysql_connect( $hostname, $uname, $upass);
mysql_select_db( $dbname);
mysql_set_charset("utf8");
}
//insertの処理の関数
function insert($word)
{
$sql="INSERT IGNORE INTO reverse (word) VALUES ('$word')";
mysql_query($sql);
}
?>
これで【a.php】をやっても
Notice: Undefined variable: hostname
Notice: Undefined variable: uname
Notice: Undefined variable: upass
Notice: Undefined variable: dbname とエラーで挿入されてません。
Undefinedとか言ってますが
ちゃんと【include.php】の中で定義してるじゃないですか。
$hostname = "localhost"; とかで。
ちょっとなぜ動かないかわからないのですが...
解決法をご教授頂けますか?
変数にはスコープというものがあり、関数外で定義された変数を関数内で利用するには global 宣言してやる必要があります。
include.php を下のように書き換えてください。
<?php $hostname = "localhost"; $uname = "root"; $upass = "****"; $dbname = "database"; //ここから接続関数 function connect() { global $hostname, $uname, $upass, $dbname; mysql_connect( $hostname, $uname, $upass); mysql_select_db( $dbname); mysql_set_charset("utf8"); } //insertの処理の関数 function insert($word) { $sql="INSERT IGNORE INTO reverse (word) VALUES ('$word')"; mysql_query($sql); } ?>
関数の外で定義された変数を関数の内部で使うには、引数として変数で受けるか、グローバル変数を global $hostname; のように宣言する必要があります。http://php.net/manual/ja/language.variables.scope.php
無事解決致しました。この度はありがとうございます。
変数にはスコープというものがあり、関数外で定義された変数を関数内で利用するには global 宣言してやる必要があります。
include.php を下のように書き換えてください。
<?php $hostname = "localhost"; $uname = "root"; $upass = "****"; $dbname = "database"; //ここから接続関数 function connect() { global $hostname, $uname, $upass, $dbname; mysql_connect( $hostname, $uname, $upass); mysql_select_db( $dbname); mysql_set_charset("utf8"); } //insertの処理の関数 function insert($word) { $sql="INSERT IGNORE INTO reverse (word) VALUES ('$word')"; mysql_query($sql); } ?>
無事解決致しました。この度はありがとうございます。
無事解決致しました。この度はありがとうございます。
2012/01/29 14:41:35