0

我有一个简单的表单,我使用会话变量将数据传递到 php 页面。我在外部函数页面中有两个函数,但我无法让每个函数中的变量在全局范围内工作,除非我在每个特定函数中命名变量。

这是一个示例,我希望有人可以提供帮助。

$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_*函数。它们已被弃用,取而代之的是PDOor MySQLi。这将帮助您编写更好的代码并防止 SQL 注入漏洞。

于 2013-02-06T19:43:40.453 回答