2015-03-20 3 views
2

В настоящее время я работаю над проектом в школе градиента. Я создаю базу данных, которая может быть записана, а также доступна для поиска. Я завершил записываемый аспект, однако у меня возникают проблемы с функцией поиска. Проблема заключается в том, что я не могу искать и отображать отдельную строку в базе данных, а только всю базу данных, которая позволяет быть честной, не очень функциональной, если база данных содержит 20 тыс. Элементов, и вам нужно только 20.Выберите синтаксис, который не отображается правильно (не уверен, если повторяется)

Я копирую кода в целом ниже.

 <?php 
     ini_set('display_errors', 'On'); 
     error_reporting(E_ALL | E_NOTICE); 

     // -------------------------------------------------------- 
     /* THIS DEMO FILE ACCEPTS DATA FROM A WEB FORM 
     AND SAVES THE DATA TO A FLAT FILE AND THEN TO A DATABASE. 
     AS A CHECK WE READ THE DATA BACK FROM THE TABLE AND FROM 
     THE FILE. 
     Created by: PATRICK DUFF, based on example written by G. Benoit, on 2/28/15 
     Modified on: 3/1/15, 3/5/15/ 3/13/15 
     Contact: xxxxxxx 
     */ 
     // -------------------------------------------------------- 
     /* GETTING READY FOR THE DATA */ 
     /* the file to hold the data */ 
     $filename = "testData.txt"; 
     $status = ""; 
     /* name of the database, table, username, password, table */ 
     $hostname = "xxxxxxx"; // change this vars for your own db 
     $username = "xxxxx"; // whatever your student email user name is 
     $password = "xxxxx"; // your usual password 
     $dbname = "xxxxxx"; // this database name is assigned for you by the Lab Staff Lab Staff 
     $table = "xxxxxx"; // once you’re using your DB, you can create your own tables 

     //getting data from webfrom 

     $isbn = $_POST["isbn"]; 
     $lname = $_POST["lname"]; 
     $fname = $_POST["fname"]; 
     $title = $_POST["title"]; 
     $publisher = $_POST["publisher"]; 
     $genre = $_POST["genre"]; 
     $con = mysqli_connect("$hostname", "$username", "$password", "$dbname"); 
    $isbn = $_POST["isbn"]; 
$lname = $_POST["lname"]; 
$fname = $_POST["fname"]; 
$title = $_POST["title"]; 
$publisher = $_POST["publisher"]; 
$genre = $_POST["genre"]; 
$con = mysqli_connect("$hostname", "$username", "$password", "$dbname"); 

//retrieving data from flat form & database. 

echo "<!DOCTYPE html><html><head> <title> Record Search </title></head>"; 
echo "<body> Here is the data: The file contents of 'testData.txt so far is/are: "; 
echo file_get_contents($filename); 
echo "<hr /> End of reading file. Attempting to read database <hr />"; 
//creating searchability 
$sql= "SELECT * FROM myLibrary WHERE isbn LIKE '%" .$isbn." %' OR fname LIKE '%" .$fname." %' OR lname LIKE'%" .$lname." %' OR title LIKE '%" .$title." %' OR publisher LIKE '%" .$publisher." %' OR genre LIKE'%" .$genre."%' ORDER BY lname" or 
    die(mysql_error()); 
$result = mysqli_query($con, $sql); 

//displays result in table 
if ($result->num_rows > 0) { 
     echo "<table id='myLibrary'><tr><th><u>ISBN</u></th><th> <u>First Name</u></th><th><u> Last Name </u></th><th><u> Title</u> </th><th><u>Publisher</u></th> <th><u>Genre</u></th></tr>"; 
    // output data of each row 
    while($row = mysqli_fetch_array($result)) { 
     echo "<tr><td>" . $row["isbn"]."</td><td>". $row["fname"]."</td><td>" . $row["lname"]. "</td><td>" .$row["title"]. "</td><td>" .$row["publisher"]. "</td><td>".$row["genre"]. "</td></tr>"; 
    } 
    echo "</table>"; 
} else { 
    echo "0 results"; 
} 

echo "End of Results"; 

По какой-то причине, когда я комментирую таблицу, ничего из таблицы не отображается.

Я надеюсь, что это было достаточно ясно, это моя первая публикация здесь.

+0

'ИЛИ LName LIKE '%' должен быть' ИЛИ LName LIKE' % '' –

+0

$ SQL = "SELECT ..." или умереть (mysql_error()); '- это полная ерунда. Кроме того, вы используете функции 'mysqli' всюду - присваивание строкового значения переменной не может само по себе вызвать ошибку базы данных. – CBroe

+0

Что значит «когда я редактирую таблицу»? Кроме того, я предлагаю вам исследовать индексацию и поиск FULLTEXT. 'WHERE LIKE '% match%'' известен тем, что является самым медленным способом поиска в базе данных. Кроме того, не следует смешивать вызовы mysqii_' и вызовы mysql_. –

ответ

0

Вам нужно всего лишь ограничить запрос, чтобы избежать возврата всех результатов.

$limit = 10; 
$sql= "SELECT * FROM myLibrary WHERE isbn LIKE '%" .$isbn." %' OR fname LIKE '%" .$fname." %' OR lname LIKE'%" .$lname." %' OR title LIKE '%" .$title." %' OR publisher LIKE '%" .$publisher." %' OR genre LIKE'%" .$genre."%' ORDER BY lname LIMIT " .$limit . "" 
Смежные вопросы