我正在编写一个脚本来访问有关用户的特定细节,我希望使数据库查询成为函数。
function connectUser($ip) {
$q = "SELECT * FROM users where ID='$ID'";
$s = mysql_query($q);
$r = mysql_fetch_array($s);
}
但是当我尝试使用它时,它将不会按照我想要的方式访问该行。
$user = '999';
connectUser($user)
echo $r['name'];
但如果我把echo $ r ['name'];在功能中它将起作用。
答案 0 :(得分:1)
你的功能没有返回任何东西。在函数末尾添加return $r['name']
。
然后echo connectUser($user);
答案 1 :(得分:1)
是你代码中的两个主要问题
$ip
$ID
变量
醇>
所以,这个会起作用
function connectUser($id) {
$q = "SELECT * FROM users where ID=".intval($id);
$s = mysql_query($q);
return mysql_fetch_array($s);
}
$user = '999';
$r = connectUser($user)
echo $r['name'];
答案 2 :(得分:0)
那是因为函数没有返回变量$r
,因此它永远不会被设置在函数之外。这是你应该拥有的:
function connectUser($ip) {
$q = "SELECT * FROM users where ID='$ip'";
$s = mysql_query($q);
return mysql_fetch_array($s);
}
然后外面有:
$user = '999';
$r = connectUser($user)
echo $r['name'];
您可能还想看一下这个问题:prepared statements - are they necessary
答案 3 :(得分:0)
此功能无效,
因为你没有将数据库连接提供给函数,所以
并且你没有返回任何东西(PHP will return NULL)
请先了解variable scope是什么,
和function
一个可行的例子,可以是: -
function connectUser($db, $ip)
{
$q = "SELECT * FROM users where ID='$ID'"; // vulnerable for sql injection
$s = mysql_query($q, $db); // should have error checking
return mysql_fetch_array($s); // value to be returned
}
使用方法: -
$db = mysql_connect(...);
$res = connectUser($db, "some value");