以下是我在 MySQL 表达式中包含 PHP 变量的失败尝试。将变量替换为 1 会导致打印结果。任何帮助将不胜感激。
$query = "
SELECT name FROM teams
WHERE id = '$shooterID'";
$shooters = mysql_query($query)
or die(mysql_error());
$i = 0;
while($shooter = mysql_fetch_array( $shooters )) {
echo $shooter[$i];
$i++;
}
$shooters = mysql_query("
SELECT name FROM teams
WHERE id = '$shooterID'")
or die(mysql_error());
$i = 0;
while($shooter = mysql_fetch_array( $shooters )) {
echo $shooter[$i];
$i++;
}
谢谢
尝试使用这里的方法并没有完全解决问题(虽然再次感谢)。这是我修改后的工作以及更多上下文(我不需要清理数据,因为它直接来自另一个查询。
$shooters = mysql_query("
SELECT * FROM events JOIN teams
on events.shooter = teams.id
") or die(mysql_error());
$i = 0;
while($results = mysql_fetch_array( $shooters )) {
$shooterIDs[$i] = $results[0];
$i++;
}
//var_dump($shooterIDs); == array(1) { [0]=> string(1) "1" }
$query = "
SELECT name FROM teams
WHERE id = '".$shooterID[0]."'";
$shooters = mysql_query($query)
or die(mysql_error());
while($shooter = mysql_fetch_array( $shooters )) {
echo $shooter[0];
}
原来我最后一次尝试在变量名称 $shooterIDs[0] 中遗漏了一个“s”。愚蠢的错误。在您的帮助下,可能还有其他问题已经解决。谢谢!
最佳答案
查询不是你的问题,输出是:
这是错误的:
$i = 0;
while($shooter = mysql_fetch_array( $shooters )) {
echo $shooter[$i];
$i++;
}
这是正确的:
while($shooter = mysql_fetch_array( $shooters )) {
echo $shooter[0];
}
还有
如果您想要包含这样的变量,请确保您正确地清理了您的输入。例如:
$shooterID = (int)$_GET['shooter_id'];
这会强制数字要么是 0
(如果它不是数字),要么是 1
(如果它们传入 shooter_id[]=somthing
) >,但它永远不能是 SQL 注入(inject)字符串。
关于php - 在 MySQL 中包含 $variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2062208/