簡體   English   中英

嘗試從數據庫中回顯具有多列的單行

[英]Trying to echo a single row with multiple columns from database

我處於用戶進程的末尾,我似乎無法在 10 列的單行中回顯所有數據。 這是我的代碼:

$state = $_POST['state'];

$city = $_POST['city'];

$jobTitle = $_POST['jobTitle'];



try {
$db = new PDO("mysql:host=localhost;dbname=TeacherData;port=8889","censored","censored");
}   catch (Exception $e) {
echo "Could not connect to database.";
exit;
}




$sql = "SELECT
TOT_EMP, 
H_MEAN, 
JOBS_1000,
A_MEAN,
H_PCT10,
H_MEDIAN,
H_PCT90,
A_PCT10,
A_MEDIAN,
A_PCT90
FROM teacherdataall 
WHERE PRIM_STATE='" . $state . "' 
AND AREA_NAME='" . $city . "' 
AND OCC_TITLE='" . $jobTitle . "'";

$result = $db->query($sql);

if($result !== false) 
{
    $cols = $result->columnCount();           // Number of returned columns

    echo 'Number of returned columns: '. $cols. '<br />';

    foreach($result as $row) 
        {
          echo $row['TOT_EMP'] . ' - ' . $row['H_MEAN'] . ' - '. $row['JOBS_1000'] . ' - ' . $row['A_MEAN'] . ' - '. $row['H_PCT10'] . ' - ' . $row['H_MEDIAN'] . ' - '. $row['H_PCT90'] . $row['A_PCT10'] . ' - ' . $row['A_MEDIAN'] . ' - ' . $row['A_PCT90'] . '<br />';
        }
}

無論打印/回聲功能有什么變化,我都無法顯示數據! 只有一排!! 任何幫助將不勝感激。

這是第 3 頁的代碼:

<?php
$state = $_POST['state'];

$city = $_POST['city'];

try {
$db = new PDO("mysql:host=localhost;dbname=TeacherData;port=8889","root","root");
}       catch (Exception $e) {
    echo "Could not connect to database.";
    exit;
}

$stmt = $db->prepare("SELECT DISTINCT OCC_TITLE FROM teacherdataall WHERE PRIM_STATE='" . $state . "' AND AREA_NAME='" . $city . "';");


echo "<br>";
echo "<form action='fourth_page.php' method='post'>";
echo "State: ";
echo "<select name='state'><option value=$state>$state</option>";
echo "</select>";
echo "City: ";
echo "<select name='city'><option value=$city>$city</option>";
echo "</select>";
echo "<select name='jobTitle'><option value=''>-- Job Title --</option>";

if ($stmt->execute()) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
    {
        echo '<option value="' . $row['OCC_TITLE'] . '">' . $row['OCC_TITLE'] . '</option>';
        echo "<hr>";
    }
echo "</select>";
echo "<button type='submit'>Next</button>";
}
    echo "</form>"; 



?>

完成編輯:由於沒有在 html value=$city 周圍添加單引號,我從 $_POST 獲得了錯誤的值。 現在一切都已解決! 謝謝@雷!

colCount()告訴您請求的列數而不是您返回的結果。 您可能需要rowCount()因為您已經知道您在查詢中明確設置了多少列。 在您的情況下,您的選擇語句有:TOT_EMP、H_MEAN、JOBS_1000、A_MEAN、H_PCT10、H_MEDIAN、H_PCT90、A_PCT10、A_MEDIAN、A_PCT90。 這意味着對於在 SQL 查詢中指定的數字列,您總是會返回數字 10。

話雖如此,我懷疑您的查詢運行成功,但返回了一組空結果(沒有匹配項)。 嘗試手動運行您在$sql構建的查詢。

如果要將結果視為關聯數組,還需要從結果中獲取行:

 $rowCount = $result->rowCount(); 

 echo 'Number of returned results: '. $rowCount. '<br />'; 

 $rows = $result->fetchAll(PDO::FETCH_ASSOC);


  foreach($rows as $row) 
  {
       //... rest here

我最后要注意的是,除非您真的想要 SQL 注入,否則您不應該直接在查詢中使用 $_POST 數組數據。 使用准備好的語句並綁定,綁定,綁定你的幸福之路:

$sql = "SELECT TOT_EMP, H_MEAN, JOBS_1000,A_MEAN,H_PCT10, H_MEDIAN,H_PCT90, A_PCT10,
        A_MEDIAN, A_PCT90 FROM teacherdataall  WHERE PRIM_STATE=:state AND    
       AREA_NAME=:area  AND OCC_TITLE=:jobTitle";


 $area = "$city, $state";
 $statement = $db->prepare($sql);
 $statement->bindValue(":state", $state);
 $statement->bindValue(":area", $area);
 $statement->bindValue(":jobTitle", $jobTitle);

 $result = $statement->execute();

我目前正在尋找這個,很難做到上面最喜歡的選項。 我發現有人發布了類似的問題,它對我有用,可以獲取 sql 的下拉列表。

我希望這可以幫助任何尋找略有不同答案的人。

這是我使用的代碼,第一次嘗試時我的問題得到了解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM