PHP:找不到数据库

时间:2015-04-20 14:50:04

标签: php mysql database

我在将数据库连接到mysql时遇到困难,我尝试了许多不同的方法来尝试将其连接到我的数据库,但这些方法似乎都没有用。我只是php的新手,我可能会遗漏一些东西,但我不知道它是什么。 这是针对搜索引擎,我创建了表单。 我认为我的问题来自这行代码,mysql_connect(" localhost"," root","")或死("无法连接");?! 我想知道我是否可以被告知是什么问题以及如何解决它,非常感谢你。 这是我的代码。

<?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> ';
        }
   }
}

&GT;

4 个答案:

答案 0 :(得分:2)

SQL错误:

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

表名不应该有空格,但如果你坚持使用它们,那么你需要正确引用:

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

永远不会输出固定/无用的“无法搜索”错误。让DB告诉你出了什么问题:

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

答案 1 :(得分:1)

作为你唯一的新手,你真的应该停止使用mysql_并改为mysqli_或(我的偏好)PDO()。您标题中的消息似乎来自您的selectdb行,因此您实际连接到数据库时,它无法找到您尝试使用的架构(即&#34 ; search&#34;在数据库环境中不作为模式名称存在)。除非这不是你得到的错误,在这种情况下它是你的实际SQL查询中的一个缺陷。当您尝试运行脚本时,如果没有准确说明您在屏幕上返回的内容,则无法提供太多帮助。

答案 2 :(得分: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

编辑:正如@tadman所指出的那样,在mysql_connect调用的前面有一个@符号,但是有一个if语句用于检查和调用错误输出。

答案 3 :(得分:0)

正如其他人所说的那样,你的代码有点混乱 - 你似乎对编程不熟悉,而不仅仅是PHP。但每个人都必须从某个地方开始,所以.......

您可能想先了解一下how to ask questions - 特别是您已经包含了许多与您要问的问题无关的代码 - 这与连接到MySQL有关。 OTOH您已经省略了许多重要信息,例如正在运行的操作系统以及您尝试过的诊断信息。请参阅here以获得更好的结果(尽管远非示范性示例)。

请仔细阅读您的问题 - 标题意味着mysql_select_db()存在问题,而在内容正文中您认为问题与mysql_connect()有关。如果您提供了脚本的实际输出,我们就可以自己说明了。

你应该检查MySQL实际上是在运行 - 你如何做到这一点取决于你的操作系统。你应该尝试使用不同的客户端连接(mysql命令行客户端,sqldeveloper,Tora,PHPMyAdmin ....有很多可供选择)。

您还应该检查(这是特定于操作系统)您的MySQL实例在php.ini中配置的相同端口上运行(或在mysql_connect()调用中重写)。

MySQL treats 'localhost'与Unix / Linux系统上的127.0.0.1不同。如果这适用于您,请尝试使用127.0.0.1代替localhost。

  

或死亡(“无法连接”);

无法帮助诊断问题。如果你改为......

or die(mysql_error());

你会得到更有意义的回应。

BTW:虽然使用mysql扩展而不是mysqli或PDO编写代码是可以原谅的,但我有点担心看到似乎没有真正安全性的医疗信息管理。