在MySQL查询中使用

在MySQL查询中使用

我正在尝试创建一个程序,其中用户将在表单字段中输入州缩写,并且输出将是处于该状态的大学。这是我的代码:

<?php
$abbr = $_POST;
print_r ($abbr);
$host='x';
$dbname='x';
$user='x';
$pass='x';
try {
  # MySQL with PDO_MYSQL
  $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
}
catch(PDOException $e) {
    echo $e->getMessage();
}

$STH = $DBH->query("
SELECT INSTNM, STABBR
FROM colleges
WHERE STABBR ='$abbr'
");

# setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);

while($row = $STH->fetch()) {
    echo $row['INSTNM'] . "\n";
    echo $row['STABBR'] . "<br>";
}
?>


输出:

Array ( [STABBR] => AL )


硬编码状态缩写时,程序运行良好。例如,如果我这样做:

$STH = $DBH->query("
SELECT INSTNM, STABBR
FROM colleges
WHERE STABBR ='AL'
");


...阿拉巴马州的大学将会出现。

我尝试了很多方法,但到目前为止都没有奏效。感谢您的帮助。

最佳答案

如您的输出所示,$_POST是一个数组,而不是单个元素。

采用

$abbr = mysql_real_escape_string($_POST['STABBR']);


既要获得正确的要素,又要防止注射攻击。

关于php - 在MySQL查询中使用$ _POST,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20225544/

10-13 00:38