0

セッション変数を使用してデータを php ページに渡す単純なフォームがあります。外部関数ページに 2 つの関数がありますが、特定の関数ごとに変数に名前を付けないと、各関数の変数をグローバルに機能させることができません。

これは、誰かが助けてくれることを願っている例です。

$dbName = $_SESSION['dataBaseName'];    
$tableName = $_SESSION['tableName'];
$artistName = $_SESSION['artistName'];
$songName = $_SESSION['songName']; 

function table_exists($tableName)
{

if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$tableName."'"))==1) 
{
echo "Table exists <br />";
}
else
{
$sql = "CREATE TABLE songList (songId int NOT NULL AUTO_INCREMENT PRIMARY KEY, artistName varchar(60), songName varchar(25))";
$result= mysql_query($sql) or die(mysql_error());
return $result;
}   
}

私の OTHER 関数では、変数を関数の中に入れました。どのコンボを使用するかは問題ではないようです。変数は、使用する関数ごとに再宣言する必要があります。前に GLOBAL を使用してみましたが、エラーが発生します。他の関数は次のとおりです。

function tableWrite() 

{

$dbName = $_SESSION['dataBaseName'];    
$tableName = $_SESSION['tableName'];
$artist = $_SESSION['artist'];
$song = $_SESSION['song']; 


 if(!empty($_REQUEST['insert']))
 {
  $sql = "INSERT INTO $tableName (artistName, songName) values ('$artist', '$song')";
  $result = mysql_query($sql) or die(mysql_error());
  $showaresult = mysql_query("SELECT * from $tableName where artistName = '$artist' AND songName= '$song' ") or die("Invalid query: " . mysql_error());
  echo ("New entry added"); 

  $row = mysql_fetch_array($showaresult);
  echo ("<br> Catalog Number = ". $row["songId"] . "<br> Artist Name =  " . $row["artistName"] . "<br>");
  echo("Song Name = " . $row["songName"] . "<br>");

  echo ("<h1> Current Catalog </h1>");

  $showresult = mysql_query("SELECT * from $tableName") or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($showresult))
  {
   echo ("<br> Catalog Number = ". $row["songId"] . "<br> Artist Name =  " .    $row["artistName"] . "<br>");
  echo("Song Name = " . $row["songName"] . "<br>");

  }

  }
  }
4

1 に答える 1

0

これらのデータベース アクセス変数を別の php ファイルに配置する必要があります (おそらくdb_config.php?)。require次に、上記の変数の値が必要なファイルでディレクティブを使用できます。

また、関数を使用しないでくださいmysql_*PDOまたはを支持して廃止されましたMySQLi。これにより、より優れたコードを記述し、SQL インジェクションの脆弱性を防ぐことができます。

于 2013-02-06T19:43:40.453 に答える