2013-11-10 3 views
0

Я изучил некоторые учебники по php-mysql из учебника. Я должен получить некоторые данные из базы данных «books», например, если я выбрал автора как searchtype, а Michael как searchterm, я должен получить некоторые результаты, поскольку имя автора находится в базе данных. Но я не получаю никакого результата после того, как я отправлю данные из формы. Он просто показывает следующее:не может получить данные из базы данных mysql

Searh Results 

Number of books found: 

follwing мой HTML код формы:

<html> 
<head> 
<title> Catalog Search</title> 
</head> 
<body> 
<h1>Catalog Search</h1> 
<form action="results.php" method="post"> 
Choose Search Type:<br /> 
<select name="searchtype"> 
<option value="author">Author</option> 
<option value="title">Title</option> 
<option value="isbn">ISBN</option> 
</select> 
<br /> 
Enter Search Term:<br /> 
<input name="searchterm" type="text"> 
<br /> 
<input type="submit" value="Search"> 
</form> 
</body> 
</html> 

У меня есть база данных с именем книги и PHP скрипт с именем results.php:

<html> 
<head> 
<title>Search Results</title> 
</head> 
<body> 
<h1>Search Results</h1> 
<?php 
// create short variable names 
$searchtype=$_POST["searchtype"]; 
$searchterm=$_POST["searchterm"]; 
if (!$searchtype || !$searchterm) 
{ 
echo 'You have not entered search details. 
Please go back and try again.'; 
exit; 
} 

$searchterm= trim($searchterm); 
$searchtype = addslashes($searchtype); 
$searchterm = addslashes($searchterm); 

// Create connection 
$con=mysqli_connect("localhost","myusername","mypassword","books"); 

// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$query = "select * from books where ".$searchtype." like '%".$searchterm."%'"; 
$result = mysql_query($query); 
$num_results = mysql_num_rows($result); 
echo '<p>Number of books found: '.$num_results.'</p>'; 
for ($i=0; $i <$num_results; $i++) 
{ 
$row = mysql_fetch_array($result); 
echo '<p><strong>'.($i+1).'. Title: '; 
echo htmlspecialchars(stripslashes($row['title'])); 
echo '</strong><br />Author: '; 
echo stripslashes($row['author']); 
echo '<br />ISBN: '; 
echo stripslashes($row['isbn']); 
echo '<br />Price: '; 
echo stripslashes($row['price']); 
echo '</p>'; 
} 
?> 
</body> 
</html> 

Что не так с кодом? заранее спасибо.

+0

Кроме того, я нашел, что должен использовать двойные кавычки –

ответ

1

Ваше соединение использует mysqli расширение, поэтому ваш запрос должен использовать это, а также и не mysql_*

$result = mysql_query($query); // Wrong extension. Use mysqli 

должен быть

$result = mysqli_query($con,$query); 

Затем все последующие базы данных функции должны использовать mysqli_*, вы не можете смешивать их вместе.

Side Примечание: использование mysqli_real_escape_string вместо addslashes.

+0

спасибо, что показывает Количество найденных книг: 1, но не показывает значения названия, автора, isbn, price –

+0

Да, поскольку, как я уже упоминал, все последующие функции должны быть ' mysqli_ * 'ones. как 'mysql_fetch_array' и т. д. –

+0

О, да .. спасибо вам так много! –

Смежные вопросы