【发布时间】:2012-07-20 19:24:50
【问题描述】:
我正在使用一个名为“lib.php”的文件,我在其中定义了许多函数。 这些功能之一如下:
function dbconn()
{
$servername="127.0.0.1";
$username="root";
$conn=mysql_connect($servername,$username)or die(mysql_error());
mysql_select_db("profit",$conn) or die(mysql_error());
}
在我网站的所有.php 页面中,我一直在使用这个dbconn() 函数,它似乎可以很好地从数据库中读取信息。但是,在尝试写入信息时,似乎会出现问题。具体来说,以下代码不起作用:
<?php
require ("lib.php");
set_time_limit(60);
session_start();
dbconn();
$sql="update `city` set end_dt=now() where city_id='$_POST[killcity]'";
$result=mysql_query($sql,$conn) or die(mysql_error());
header("Location: manipulate.php");
?>
它说conn是一个未定义的变量,而它应该由lib.php中的dbconn()定义。
所以,我找到了解决这个问题的方法,而是创建一个名为 dbconn.php 的新 php 文件,其中包含与 dbconn() 完全相同的内容,并插入 require ("dbconn.php"); 而不是 dbconn();。
但我仍然想知道:为什么原来的方式不起作用?
【问题讨论】:
-
这是variable scope的问题。
-
@AlvinWong 这应该是一个答案。
-
请阅读SQL injection,因为您似乎习惯于编写易受攻击的代码。
标签: php mysql function connect require