我有一个简单的表单,我使用会话变量将数据从该表单传递到一个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;
}
}在我的另一个函数中,我将变量放在函数内部。我使用什么组合似乎并不重要,我使用的每个函数都必须重新声明变量。我尝试在前面使用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>");
}
}
}发布于 2013-02-07 03:43:40
您应该将这些数据库访问变量放在一个不同的php文件中(也许是db_config.php?)。然后,您可以在需要上述变量的值的文件中使用require指令。
另外,不要使用mysql_*函数。它们已被弃用,取而代之的是PDO或MySQLi。这将帮助您编写更好的代码,并防止SQL注入漏洞。
https://stackoverflow.com/questions/14737369
复制相似问题