2013-07-08 2 views
0

В настоящее время я работаю над школьным проектом с использованием PHP и MySQL. Я создал форму с тремя раскрывающимися списками, в которых пользователи выбирают типы данных, которые они ищут. Тем не менее, у меня возникают проблемы с отображением результатов после отправки формы. Вот мой текущий код:Отображение результатов запроса после отправки PHP формы

<?php 
require_once 'connection.php'; 
?> 


<form action="stats.php" method ="post"> 
<input type="hidden" name="submitted" value="true" /> 

<fieldset> 
<legend> 
Specify Date, Month, and County 
</legend> 
<p> 
<label for="year"> 
Please select a year 
</label> 

<select name= 'year'> 
<?php 
$query = "select distinct year from unemployed"; 

$result = $conn->query($query); 
while($row = $result->fetch_object()) { 
    echo "<option value='".$row->year."'>".$row->year."</option>"; 
} 
?> 
</select> 
</p> 

<p> 
<label for="month"> 
Please select a month 
<label> 

<select name= 'month'> 
<?php 
$query = "select distinct month from unemployed"; 

$result = $conn->query($query); 
while($row = $result->fetch_object()) { 
    echo "<option value='".$row->month."'>".$row->month."</option>"; 
} 
?> 
</select> 
</p> 

<p> 
<label for="location"> 
Please specify a location 
</label> 

<select name='select'> 
<?php 
$query = "select * from unemployed"; 

$result = $conn->query($query); 

while ($finfo = $result->fetch_field()) { 
    echo "<option value='".$finfo->name."'>".$finfo->name."</option>"; 
} 

?> 
</select> 
</p> 


<input type ="submit" /> 

</fieldset> 
</form> 

<?php 

if (isset($_POST['submitted'])) { 

include('connection.php'); 

$gYear = $_POST["year"]; 
$gMonth = $_POST["month"]; 
$gSelect = $_POST["select"]; 

$query = "select $gSelect from unemployed where year='$gYear' and month='$gMonth'"; 

$result = $conn->query($query) or die('error getting data'); 


echo"<table>"; 
echo "<tr><th>Year</th><th>Time</th><th>$gSelect</th></tr>"; 

while ($row = $result->fetch_object()){ 

echo "<tr><td>"; 
echo $row['Year']; 
echo "</td><td>"; 
echo $row['Month']; 
echo "</td><td>"; 
echo $row['$gSelect']; 
echo "</td></tr>"; 

} 




echo "</table"; 

} // end of main if statement 

?> 

Я почти уверен, что моя проблема заключается в моем заявлении while. Я получаю заголовки столбцов таблицы, чтобы они отображались (Год, Месяц, $ gSelect), но я не получаю результаты моего запроса для отображения.

Я попытался:

while ($row = $result->fetch_object()) 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 

Ни один из них работают для меня. Я смотрел php.net для руководства. Я все еще смущен тем, что делать. Если бы кто-нибудь мог мне помочь, я был бы очень признателен.

+0

вы уверены, что ваш запрос возвращает строки? – crush

+2

попробуйте 'var_dump ($ result)', чтобы узнать, что вы получаете от запроса. Вероятно, вы также должны добавить некоторую обработку ошибок в свой код, чтобы убедиться, что запрос выполняется успешно. – andrewsi

+0

Действительно ли ваш запрос возвращает какие-либо данные? Попробуйте повторить запрос прямо перед его выполнением, чтобы проверить наличие ошибок и затем выполнить echo $ result-> num_rows, чтобы проверить, что что-то было возвращено. –

ответ

1

Всегда проверяйте ваши возвращения:

if(! $result = $conn->query($query)) { 
    die('Error: ' . $conn->error()); 
} else { 
    while($row = $result->fetch_object()) { 
    echo "<option value='".$row->year."'>".$row->year."</option>"; 
    } 
} 

положить также error_reporting(E_ALL); в верхней части вашего скрипта, пока вы разрабатываете, это поможет чрезвычайно, как хорошо.

+0

Я пытался сделать это, но он все равно ничего не отобразит. Я включил var_dump ($ row), чтобы убедиться, что я извлекаю данные. Я, но я не могу заставить его отображаться в моем столе. – user2562125

0

Вы должны реально смотреть на прохождение переменных в качестве параметров запроса вместо инъекционных их в качестве переменных непосредственно в запрос. Это может привести к атакам SQL-инъекций.

Кроме того, вот краткий пример того, как написать запрос с помощью PDO и MySQL:

//Simple Query 
$dbh = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); 
//Useful during development. 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
//mysql can have prepares depending on the version: http://stackoverflow.com/questions/10113562/pdo-mysql-use-pdoattr-emulate-prepares-or-not 
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$sth = $dbh->query("SELECT * FROM table"); 
var_dump($sth->fetchAll(PDO::FETCH_ASSOC)); 
//Now with pass params and a prepared statement: 
$query = "SELECT * FROM table WHERE someCol = ?"; 
$sth = $dbh->prepare($query); 
$sth->bindValue(1,"SomeValue"); 
$sth->execute(); 
$results = $sth->fetchAll(PDO::FETCH_ASSOC)); 
Смежные вопросы