php - 在 MySQL 中包含 $variable

标签 php mysql

以下是我在 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/

相关文章:

当包含某些列时,PHP PDO Fetch 返回 0 个结果

php preg_replace 字符串提取

php - 如何用 PHP 交换字符串中两个不同字符的值? A变成B,B变成A

MySQL真正的行合并......不仅仅是一个联合

php - 当总行数超过一个数字时,从表中删除所有行

php - Laravel + Vue 前端与可选的服务器端 Blade 渲染解耦

php - 在php中调用aspx怎么样?

mysql - Grails 删除孤儿多对多关系

php - 如何在docker容器中连接我的主机mysql?

mysql - 不要抓取重复项(MYSQL DISTINCT GROUP BY)