好吧,我在SMF的自定义脚本中有这个功能:
$query = "SELECT id_member, real_name, id_group FROM smf_members WHERE id_group > 0 AND id_group != 9 AND id_group != 12 ORDER BY id_group ASC";
$result = mysql_query($query, $con);
function Display($member_id)
{
$queryDisplay = "SELECT value
FROM smf_themes
WHERE id_member = ".$member_id."
AND variable = 'cust_realfi'";
}
while ($row = mysql_fetch_array($result)) {
Display($row['id_member']);
$resultDisplay = mysql_query($queryDisplay, $con);
echo ("<td>");
if (mysql_num_rows($resultDisplay) == 0) echo ("Not yet entered");
else {
while ($rowDisplay = mysql_fetch_array($resultDisplay)) {
if (strlen($rowDisplay['value']) > 0) echo ("".$rowDisplay['value']."");
}
}
echo ("</td>");
}
如果我回音($ member_id);它工作得很好,但只要我把它放在那里^,它什么都不做。
我做错了什么? :(
答案 0 :(得分:1)
是整个功能吗?您甚至没有运行查询。你所做的只是用sql创建一个字符串而不是运行它。
编辑:
我认为你需要帮助理解PHP中的变量范围。
http://php.net/manual/en/language.variables.scope.php
基本上它表示函数内部的代码无法访问函数外部定义的变量(大多数变量)。例如:
$test = "test value";
function testFunc(){
//Since the code inside this function can't
//access the variables outside of this function
//the variable $test below is just an empty
//variable.
echo $test;
}
testFunc();
这也可以反过来,在函数内部无法访问函数内部的变量。这就是你做错了。
function testFunc(){
$someNewVar = "some new string";
}
testFunc();
//$someNewVar is never defined outside the function so it doesn't exist.
echo $someNewVar;
函数运行完成后,在内部声明和使用的所有变量都将从内存中删除。
因此要将变量放入函数中,需要将其作为参数传递。要获取变量,您需要函数返回变量。
function testFunc($testVar){
echo $testVar;
$testVar = "some new string";
return $testVar;
}
$test = "test val";
//passing the variable into the function and setting
//the return value back into $test.
$test = testFunc($test);
echo $test; //test now has "some new string".
老实说,php页面会比我更好地描述它。但这应该让你知道出了什么问题。
答案 1 :(得分:1)
您的函数不执行任何操作:它为局部变量赋值,然后对值和变量不执行任何操作。它应该返回它(值)或执行查询。
另请注意,执行字符串连接以将变量放入查询中会产生安全漏洞:http://bobby-tables.com/
您应该考虑使用此处建议的mysqli和参数化查询:http://bobby-tables.com/php.html
至少,请考虑使用PHP提供的函数引用查询中包含的值来执行此操作。所有价值观。但参数化查询更好更容易。
答案 2 :(得分:0)
您的查询
function Display($member_id){
$queryDisplay = "SELECT value FROM smf_themes WHERE id_member = ".$member_id." AND variable = 'cust_realfi'";
}
正确的查询
function Display($member_id){
$queryDisplay = mysql_query("SELECT value FROM smf_themes WHERE id_member = '$member_id' AND variable = 'cust_realfi'");
while ($row = mysql_fetch_array($queryDisplay));
return $row['value'];
}
答案 3 :(得分:0)
您只是准备sql查询,但没有执行它。
答案 4 :(得分:0)
你的函数只生成一个变量$ queryDisplay(在函数范围内被捕获)