我想在函数中使用MySQL Query来从表中检索信息:
function selectFromMemTable($a) {
$query="SELECT * FROM members WHERE username = '" . $a ."'";
$result = mysql_query($query) or die ("FOUT: " . mysql_error());
while (list($id, $a, $b, $c, $d, $e, $f) = mysql_fetch_row($result)){
$user_id = $id;
$user_usernaam = $a;
$user_voornaam = $b;
$user_achternaam = $c;
$user_email = $d;
$user_password = $e;
$user_admin = $f;
}
}
在脚本中,我想使用以下代码来检索$user_id
。
selectFromMemTable(username);
echo $user_id;
加载页面时,我收到以下错误:
Fatal error: Call to undefined function selectFromTable() in test.php on line 28
没有该功能,它可以正常工作。有什么问题?
抱歉,正确的脚本是:
selectFromMemTable($_COOKIE["user"]);
echo $user_id;
答案 0 :(得分:2)
您将函数命名为selectFromMemTable
,但正在调用selectFromTable
。这是错误的名字。
答案 1 :(得分:0)
检查您的功能名称。编辑器说你试图用不同的名字调用一个函数。
在您的函数selectFromMemTable
中,您应返回所选值或全局变量。因为只有在私有时才能访问它们。
永远不要相信传入的请求变量! Yo应该转义$_COOKIE["user"]
以便在数据库查询中使用(使用mysql_real_escape_string或更新的mysqli_real_escape_string)。< / p>
由于每个用户名只匹配1个用户,因此您应将所选行LIMIT
设为1。
请注意直接使用Cookie中的用户名来访问私人用户数据。出于安全原因,您应该使用单独的会话ID或加密更强的个人限定符来使用cookie。那是因为实际上用户可以在cookie值中更改它的名称,而不是以另一个用户身份登录。
您可以fetch an assoc - 访问更简单,您无需设置大量变量。
功能声明:
function selectFromMemTable($a)
{
$query = sprintf("SELECT * FROM members WHERE username = '%s' LIMIT 1",
mysql_real_escape_string($a));
$result = mysql_query($query) or die ("FOUT: " . mysql_error());
return mysql_fetch_assoc($result);
}
使用功能:
$user = selectFromMemTable($_COOKIE["user"]);
if(!$user)
echo "no user";
else
echo $user['id'];
修改:也许您必须将id
中的$user['id']
更改为正确的列名称。