2013-03-14 3 views
0

Я пытаюсь извлечь данные из моего клиента db, используя форму html.данные запроса в базе данных

Может кто-нибудь сказать мне, что не так с моим кодом, этот php-код для сбора данных из моей базы данных и возврата ответа. Я очень новичок в html/php.

<?php 
     echo $_POST['term']; 
mysql_connect ("localhost", "root","") or die (mysql_error()); 
mysql_select_db ("client"); 
$term = $_POST['term']; 
$sql = mysql_query("select * from `client` where first_name like '%".mysql_real_escape_string($term)."%'"); 
while ($row = mysql_fetch_array($sql)) 
{ 
    echo 'ID: '.$row['ID']; 
    echo '<br/> First Name: '.$row['first_name']; 
    echo '<br/> Last Name: '.$row['last_name']; 
    echo '<br/> Phone: '.$row['Phone']; 
    echo '<br/><br/>'; 
    } 




?> 

    </body> 
</html> 

Примечание: Undefined индекс: член в C: \ XAMPP \ HTDOCS \ getdata.php на линии 19

Примечание: Undefined индекс: член в C: \ XAMPP \ HTDOCS \ getdata.php на линии 22

Предупреждение: mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический приведены в C: \ XAMPP \ HTDOCS \ getdata.php на линии 24

по-прежнему получать указанное выше уведомление

+0

Ну, например, инъекции SQL. Для двоих вызываются устаревшие функции mysql_. И вы третий сегодня с этими двумя проблемами, только тот, кого я видел. Когда это прекратится? – ppeterka

ответ

2

Это у наша ближайшая задача:

$sql = mysql_query("select * from 'client' where first_name like '%$term%'"); 

квотирование вокруг имени таблицы client неверна. Используйте кавычку для этого:

$sql = mysql_query("select * from `client` where first_name like '%$term%'"); 

И вы должны защитить себя:

$sql = mysql_query("select * from `client` where first_name like '%".mysql_real_escape_string($term)."%'"); 

Но если серьезно, пожалуйста, обещай прочитать на SQL инъекции и не используют mysql_ функции больше!

USE PDO пожалуйста

Читайте эти:

+0

спасибо за ваш совет, я учусь – pitbull10

+0

Я ценю то, что вы говорите о MySQL и pdo и т. Д., Но проблема в том, что многие из нас изучают этот материал, что если вам дают старые вещи, чтобы учиться, старый MySQL phpmyadmin и старый код, как мы будем поддерживать вас, ребята. Мне просто нужна html-страница, написанная в Notepad ++ из книг, которые 10 лет. который получает данные в моей базе данных phpmyadmin, которая находится в xampp 1.8. чтобы работать, он никогда не будет жить или использоваться. – pitbull10

+0

@ pitbull10 Именно поэтому я - и соратник Соерс - забочусь ... Я мог бы переусердствовать по всей проблеме, я просто потрясен, так мало кто знает об этих вещах ... Хорошо, литература может быть старой - но есть причина, по которой я покупаю только определенные книги, и изучаю остальное онлайн как можно больше. Я советую всем сделать то же самое, поскольку некоторые книги могут устареть в тот момент, когда они попали на полки. Извините, если я звучал суровым, мое терпение в наши дни не так, как раньше ... – ppeterka

0

Привет из беглого взгляда на него, я бы сказал, ошибка в Сам запрос MySQL. Вы используете одинарные кавычки вокруг имени таблицы, и я не думаю, что это правильно. попробуйте использовать никакие кавычки вообще или использовать одиночный «backquote» или то, что вы называете его, - символ: `

+0

спасибо за конструктивный ответ – pitbull10

+0

Если ваш код все еще не работает, я бы предложил вставить: 'var_dump ($ _ POST);' somwehere в начале вашего кода, чтобы узнать, что вы на самом деле имеете в поле $ _POST. Вы можете отправлять данные себе, используя $ _GET, или вы можете ошибочно называть имя переменной POST. Из чего вытекает тот факт, что $ sql FALSE для полученного SQL-запроса недопустим ($ _POST ['term'] кажется неопределенным) – Martina

2

В дополнение к решениям ppeterka есть также отсутствующая кавычка amd semi colon непосредственно перед закрытием вашего цикла while

echo '<br/><br/> 
} 

следует читать

echo '<br/><br/>'; 
} 
+0

благодарю вас за помощь – pitbull10