【问题标题】:SQL Could not fetch recordsSQL 无法获取记录
【发布时间】:2014-01-24 10:33:56
【问题描述】:

我正在尝试根据用户的需求将特定记录输出到 .csv 中。到目前为止,我能够让 .csv 工作,但现在我正试图从表单中获取记录,我不断收到它无法获取我的 sql 记录的消息。

是的,您可能会说将我的 php 代码放在页面顶部可能会出现问题,但我将其放在那里的原因是为了避免将 html 标签也打印到 .csv 文件中。

这是我当前的代码:

    <?php

if(isset($_POST['submit']))
    {
        $material = $_POST['materials'];
        mysql_connect('localhost', 'root', 'pw');
        mysql_select_db ("db");
        $result = mysql_query("SELECT " . $material . " FROM materials"); 
            if (!$result) 
                die('Couldn\'t fetch records'); 

        $num_fields = mysql_num_fields($result); 
        $headers = array(); 

            for ($i = 0; $i < $num_fields; $i++) 
                {     
                    $headers[] = mysql_field_name($result , $i); 
                } 

        $fp = fopen('php://output', 'w'); 

            if ($fp && $result) 
                {     
                     header('Content-Type: text/csv');
                     header('Content-Disposition: attachment; filename="export.csv"');
                     header('Pragma: no-cache');    
                     header('Expires: 0');
                     fputcsv($fp, $headers); 

                     while ($row = mysql_fetch_row($result)) 
                        {
                            fputcsv($fp, array_values($row)); 
                        }
                     die; 
                } 

    }

?>

<h1>Generate Reports</h1>
    <form enctype="multipart/form-data" action="create" method="post">
        <table>
            <tr>
                <td><strong>Materials</strong></td>

<?php
    mysql_connect('localhost', 'root', 'pw');
    mysql_select_db ("db");
    $sql = "SELECT material_name FROM materials";
    $result = mysql_query($sql);

    echo "<td><select name='materials'>";

    while ($row = mysql_fetch_array($result)) 
        {
            echo "<option value='" . $row['material_name'] . "'>" . 
            $row['material_name'] . "</option>";
        }

    echo "</select></td></tr> ";

    $sql2 = "SELECT location_name From locations";
    $result2 = mysql_query($sql2);

?>


                <td><strong>Locations</strong></td>
<?php

    echo "<td><select name='locations'>";
    while ($row2 = mysql_fetch_array($result2)) 
        {
            echo "<option value='" . $row2['location_name'] . "'>" . 
            $row2['location_name'] . "</option>";
        }   

    echo "</select></td></tr>";

?>
    <tr>
        <td><button name="submit" type=submit>Generate</button></td>
        </tr>
    </table>
</form>

【问题讨论】:

  • sql JOIN?我不明白你的意思。更具体。
  • 在您的代码中将 mysql_fetch_row 更改为 mysql_fetch_array

标签: php mysql sql csv


【解决方案1】:

您想从表中获取特定材料的记录对吗?

如果你使用 -

 $result = mysql_query("SELECT " . $material . " FROM materials");

这一行似乎不太好.. 实际上,要选择材料,您必须有 where 子句,并且在变量 $material 的位置,您需要传递您要选择的列或 * 用于所有列。您的查询可能是这样的 -

 $result = mysql_query("SELECT * FROM materials where Material_Name = ".$material); 

现在它将返回材料表中的所有记录,其中材料名称是您传递的值。

【讨论】:

  • 我想我忘了放“where”部分,但它仍然没有从表单中检索值!
  • Nvm,我有一个错字。工作正常:)
  • 查看变量 $material 的材质名称对吗??假设您输入了材料名称“XXX”,那么在您的情况下执行什么查询?即 - 从材料中选择 XXX 但实际上查询将是 从材料中选择 * 其中材料名称 = XXX 所以请也更改查询
猜你喜欢
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多