2015-04-20 3 views
1

У меня возникли трудности с подключением моей базы данных к mysql, я пробовал много разных способов попытаться подключиться к моей базе данных, но ни один из этих методов не работает. Я только новичок в php, и я мог что-то пропустить, но я не знаю, что это такое. Это для поисковой системы, у меня есть созданная форма. Я бы подумал, что моя проблема исходит из этой строки кода, mysql_connect («localhost», «root», «») или die («не удалось подключиться»);?! Мне было интересно, могу ли я сказать, в чем проблема, и как исправить это, большое вам спасибо. вот мой код ниже.PHP: не удалось найти базу данных

<?php 
//connect 


mysql_connect("localhost", "root", "") or die("could not connect"); 
mysql_select_db("search") or die("could not find database"); 

$output = ''; 

if (isset($_POST['search'])) { 
    $searchq = $_POST['search']; 
    $searchq = preg_replace("#[^0-9a-z]#i","", $searchq); 


    $query = mysql_query("SELECT * FROM gp management system WHERE Title LIKE '%$searchq%' OR Description LIKE '%$searchq%' OR Keyword LIKE '%$searchq%'") or die("could not search"); 
    $count = mysql_num_rows($query); 
    if($count == 0) { 
     $output = 'There was no search results!'; 
    } 
    else{ 
     while($row = mysql_fetch_array($query)) { 
      $Title = $row['Title']; 
      $Description = $row['Description']; 
      $Keyword = $row['Keyword']; 

      $output .= '<div> ' .$Keyword. ' </div> '; 
     } 
    } 
} 

ошибки>

+0

С одной стороны, это проблема 'FROM gp management system 'и одна из них. –

+1

Какая ошибка? – baig772

+0

У вас есть база данных с именем 'search'? – frz3993

ответ

2

SQL:

SELECT * FROM gp management system WHERE Title... 
       ^^-- table name 
        ^^^^^^^^^^ aliasing 'gp' as 'management' 
          ^^^^^^-- extra unknown garbage 

Имена таблиц не должны иметь места для начала, но если вы настаиваете на них, то вам нужно правильное цитирование:

SELECT * FROM `gp management system` etc... 
       ^--------------------^ 

Никогда не выводите фиксированную/бесполезную ошибку «не удалось выполнить поиск». Есть БД сказать, что пошло не так:

$result = mysql_query($sql) or die(mysql_error()); 
          ^^^^^^^^^^^^^^^^^^^^^^^ 
+0

Мне нравится ваш * стиль *. –

+0

Большое вам спасибо за эту обратную связь, я только новый, и я делаю глупые вещи, спасибо, работая сейчас! – Ruairi92

+0

@ Ruairi92 вы можете отметить галочку рядом с ответом MarcB, чтобы отметить ее как ответ на вашу проблему. Пожалуйста, сделайте это, чтобы другие, у кого есть подобная проблема, могли найти его ответ. Cheers – Martin

1

как единственный новый, вы действительно должны прекратить использовать mysql_ и изменения в mysqli_ или (мое предпочтение) PDO(). Ваше сообщение в вашем заголовке, похоже, поступает из вашей строки selectdb, поэтому вы фактически подключаетесь к базе данных в порядке, просто не можете найти схему, которую вы пытаетесь использовать (т. Е. «Поиск» не существует в виде схемы имя в вашей среде БД). Если это не ошибка, которую вы получаете, в этом случае это недостаток в вашем фактическом SQL-запросе. Без точного описания того, что вы возвращаетесь на экран при попытке запустить скрипт, не так много можно сделать, чтобы помочь.

+0

Большое спасибо за эту обратную связь, я действительно ее оценил. – Ruairi92

0

я предпочел бы сделать как-то, как я сделал много лет назад, смотрите ниже:

function db_connect($host, $username, $passwd, $db_name) { 
    $db = mysql_connect($host, $username, $passwd); 

    if (!$db) { 
     echo "Login to database failed: "; 
     echo mysql_error(); 
     return false; 
    } 

    $result=mysql_select_db($db_name); //Select the database 

    if (!$result) { 
     echo "Cannot find the database: ".$db_name; 
     echo mysql_error(); 
     return false; 
    } 

    return $db; //Database descriptor 
} 

Однако вы shouldnt полагаться на старые расширения MYSQL, но использовать MYSQLi.

EDIT: поскольку @tadman указал, что перед вызовом mysql_connect появился знак @, однако для проверки и вывода на вывод ошибки есть инструкция if.

+1

Добавление '@' для добавления подавления ошибок вряд ли поможет в этом. – tadman

+0

Привет, спасибо вам, за отзыв! – Ruairi92

0

Как говорили другие, ваш код является чем-то вроде беспорядка - вы, похоже, новичок в программировании, а не только на PHP. Но каждый должен начать где-то, так что ...

Возможно, вы захотите немного узнать о how to ask questions - в частности, вы включили много кода, который не имеет отношения к проблеме, о которой вы спрашиваете, - что о подключении к MySQL. OTOH вы опустили много важной информации, например, о текущей операционной системе и о том, какую диагностику вы предприняли. См. here для лучшего (хотя и далекого от примерного примера).

Внимательно прочитайте свой вопрос - заголовок подразумевает проблему с mysql_select_db(), в то время как в теле содержимого, которое вы говорите, вы думаете, что problerm с mysql_connect(). Если бы вы предоставили фактический результат сценария, мы бы смогли сказать сами.

Вы должны проверить, что MySQL действительно работает - как вы это делаете, зависит от вашей ОС. Вы должны попробовать подключиться с помощью другого клиента (клиент командной строки mysql, sqldeveloper, Tora, PHPMyAdmin .... есть много на выбор).

Вы также должны проверить (опять же, это зависит от операционной системы), что ваш экземпляр MySQL работает на том же порту, который настроен в вашем php.ini (или переопределен в вызове mysql_connect()).

MySQL treats 'localhost' как нечто отличное от 127.0.0.1 в системах Unix/Linux. Если это применимо к вам, попробуйте 127.0.0.1 вместо localhost.

или die ("не удалось подключить");

Не помогает при диагностике проблемы. Если вместо этого вы ...

or die(mysql_error()); 

Вы получите более содержательный ответ.

BTW: при написании кода с использованием расширения mysql, а не mysqli или PDO, простительно, меня несколько тревожит, чтобы увидеть, что, как представляется, медицинская информация управляется без реальной безопасности.

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