将PHP函数的返回值传递给mysql_query


passing return value from a php function to a mysql_query

我有一个传递$query变量到mysql_query命令的问题。所以如果我这样做,我在数据库中得到一个更新(我想要的):

$query = "UPDATE master SET finished_size = '$finished_size' WHERE id = $id";
mysql_query ($query, $db);

然而,我需要使用一个函数来做到这一点。我正在尝试使用此代码,但我不再能够获得我想要的数据库更新:

if ( !function_exists("testQuery") ) {
    function testQuery($id) {
        return 'UPDATE master SET finished_size = "$finished_size" WHERE id = $id';
    }
}
$query = testQuery($id);
mysql_query ($query, $db);

我已经尝试了很多方法这样做,但是$query变量包含字符串传递给mysql_query函数似乎没有被识别。但我不知道还有什么其他合适的方法。

另外,我意识到mysql_query是一个老函数,但这是我必须使用的代码,因为我在非常老的软件上工作。

为函数添加另一个参数

此外,变量只能在双引号内展开,而不能在单引号内展开。查看PHP中单引号和双引号字符串的区别?

if ( !function_exists("testQuery") ) {
    function testQuery($id, $finished_size) {
        return "UPDATE master SET finished_size = '$finished_size' WHERE id = $id";
    }
}
$query = testQuery($id, $finished_size);
mysql_query ($query, $db);

如果在不连接更多字符串的情况下将变量放入字符串,则必须使用引号,而不是撇号。所以:

return "UPDATE master SET finished_size = '$finished_size' WHERE id = $id";

原来,问题是我使用$_POST变量,已经被提取,所以$finished_size不再被视为一个全局变量(像$_POST['finished_size']将是)。因此,提取的变量在函数中没有作用域访问权限。

所以我只是在函数中重新提取$_POST。我有很多$_POST变量来自于一个表单,所以在函数中提取它们似乎是一种相当方便的方法,可以将它们传递回$query。

在此之前给出的答案有助于我意识到这是一个范围问题。