2013-02-27 3 views
0

Может ли кто-нибудь понять, почему приведенный ниже код не работает? Это из-за устаревшего синтаксиса sql? Я в тупике с этим.Поиск в базе php/mysql

<?php 
mysql_connect("localhost",$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 

$usersearch=$_POST['search']; 
$query="SELECT * FROM tracks WHERE 'artist' LIKE '%$usersearch%'"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 

mysql_close(); 

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 

echo $row["artist"]." | ".$row["name"]; 
echo "<br>"; 

} 

?> 
+0

Что не работает? Вы проверили свой журнал ошибок? Какие ошибки вы получаете? Какие шаги вы предприняли для устранения этой проблемы? –

+1

Прежде всего, не используйте '@', это плохая практика. Также, пожалуйста, укажите, какой результат вы получите. Вы пробовали print_r ($ row) ;? что он говорит? Наконец, да, mysql_ устарел, но он по-прежнему работает, хотя он –

+0

John, это для школьного проекта - я знаю, что он не работает, потому что, когда я набираю перечисленного исполнителя из базы данных в поисковый ящик, он просто возвращает пустую страницу. Что такое журнал ошибок? – maccame

ответ

0

добавить в верхней части страницы:

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

и открыть страницу в браузере. есть ли какие-либо ошибки?

изменения (это приглушает ошибки)

@mysql_select_db($database) or die("Unable to select database"); 

к:

mysql_select_db($database) or die("Unable to select database"); 

Слово советы, хотя, лучше использовать MySQLi или [PDO_MySQL] [3] вместо mysql_connect, так как это будет вскоре будут устаревшими:

Предупреждение

Это расширение устарело от PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации. Альтернативы этой функции включают в себя:

mysqli_connect()

Вы можете найти более подробную информацию о том, как использовать их на this answer.

UPDATE

проверить, если вы получите пустой результат, добавьте:

$num=mysql_numrows($result); 
if ($num === 0) echo "Empty result" 

и откройте страницу. если страница остается пустым, изменение:

echo $row["artist"]." | ".$row["name"]; 
echo "<br>"; 

к:

vardump($row); 

UPDATE 2

Если вы все-таки Empty result, чем добавить

echo $query; 

и попробовать для открытия страницы и запуска запроса вручную

+0

Спасибо, я внесли изменения - не сообщалось об ошибках - только белый экран – maccame

+0

, какую версию PHP вы используете? ответ обновлен, проверьте его. – Kuf

+0

Kuf, я не знаю, какая версия php находится на школьном сервере? Я получаю пустой результат? – maccame

1

Вероятно, у вас есть одинарные кавычки ('), а не `при выборе таблицы. И, как указано, не используйте mysql_ *, используя PDO или mysqli, даже если это просто школьный проект (старые привычки умирают тяжело).Кроме того, вы можете добавить

mysql_query($query) or die($mysql_error()); 

Это, вероятно, указывают, что случилось ..

и для последнего, пожалуйста, избежать динамических входных переменных

+0

sgulseth - вы исправили его !! это были кавычки вокруг художника - я их вытащил и искал, многие из них благодарили всех за предложения. – maccame

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