我遇到了将$ 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);
我尝试了很多方法,但是包含要传递给mysql_query函数的字符串的$ query变量似乎无法识别。但我不知道如何以正确的方式做到这一点。
另外,我意识到mysql_query是一个旧函数,但这是我必须使用的代码,因为我正在使用非常旧的软件。
答案 0 :(得分:2)
在函数中添加另一个参数。
此外,变量仅在双引号内扩展,而不是单引号。见What is the difference between single-quoted and double-quoted strings in 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);
答案 1 :(得分:1)
如果您在不连接更多字符串的情况下将变量放入字符串,则必须使用引号,而不是撇号。所以:
return "UPDATE master SET finished_size = '$finished_size' WHERE id = $id";
答案 2 :(得分:0)
事实证明问题在于我使用的是已经提取的$ _POST变量,因此$ finished_size不再被视为全局变量(如$ _POST ['finished_size']将)。因此,提取的变量在函数中没有范围访问权。
所以我只是在函数内部重新提取$ _POST。我有很多来自表单的$ _POST变量,因此在函数内部提取它们似乎是将它们传递回$ query的一种相当方便的方法。
在此之前给出的答案有助于我意识到这是一个范围问题。