数据库里有记录,但查询响应的记录时,却显示“数据库查询失败!<br/>可能数据库中没有记录”,请教这是什么问题?搜索代码:
  <form id="form1" name="form1" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    搜索:
    <label>
      <select name="mode" id="S_mode">
        <option value="S_all" selected="selected">全部</option>
        <option value="S_name">供应商</option>
        <option value="S_birthday">生日</option>
        <option value="S_qq">QQ</option>
        <option value="S_mobile">手机</option>
        <option value="S_email">邮箱</option>
        <option value="S_address">地址</option>
      </select>
    </label>
    <label>
      <input name="word" type="text" id="S_word" />
    </label>
    <label>
      <input type="submit" name="Submit" value="搜索" />
    </label>
  </form>查询代码:
<?php
$word = $_GET['word'];  //获得关键字
$mode = $_GET['mode'];  //获取搜索方式
if(!empty($word)) {
    echo '<title>可以查询</title>';
    echo '您查询的关键词是:“',$word,'”<br/>';
$sql = "SELECT * FROM ".SqlTableName;
switch($mode)
{
case 'S_all': $sql = 'SELECT * FROM `'.SqlDataBase.'`.`'.SqlTableName."` 
WHERE `Name` LIKE '%$word%' OR `Birthday` LIKE '%$word%'
OR `QQ` LIKE '%$word%' OR `Mobile` LIKE '%$word%' 
OR `Email` LIKE '%$word%' OR `Address` LIKE '%$word%'";break; case 'S_name': $sql = 'SELECT * FROM `'.SqlDataBase.'`.`'.SqlTableName."` 
WHERE `Name` LIKE '%$word%'"; break;
case 'S_birthday': $sql = 'SELECT * FROM `'.SqlDataBase.'`.`'.SqlTableName."` 
WHERE `Birthday` LIKE '%$word%'"; break;
case 'S_qq': $sql = 'SELECT * FROM `'.SqlDataBase.'`.`'.SqlTableName."` 
WHERE `QQ` LIKE '%$word%'"; break;
case 'S_mobile': $sql = 'SELECT * FROM `'.SqlDataBase.'`.`'.SqlTableName."` 
WHERE `Mobile` LIKE '%$word%'"; break;
case 'S_email': $sql = 'SELECT * FROM `'.SqlDataBase.'`.`'.SqlTableName."` 
WHERE `Email` LIKE '%$word%'"; break;
case 'S_address': $sql = 'SELECT * FROM `'.SqlDataBase.'`.`'.SqlTableName."`
                                                        WHERE `Address` LIKE '%$word%''; break;
default: $sql = "SELECT * FROM `".SqlTableName."`";
}
require('conn.php');    //调用conn.php文件,执行数据库操作
   $result = mysqli_query($conn,$sql) or die('数据库查询失败!<br/>可能数据库中没有记录'); //SQL语句在这里执行
if($result) 
{
echo $result;
}
}
else
{
    echo '<title>',$word,'</title>';
}
?>

解决方案 »

  1.   

    or die(mysql_error());看哈具体的错误是什么看看
      

  2.   

    改了以后,没有任何提示信息!
    现在数据库里比如有“中华人民共和国AAA”这样一条供应商的记录,我选择S_mode为供应商,关键字为“AA”,然后点查询,结果啥都没有,一片空白如果我把其中的一个case条件改为:
    case 'S_address': $sql = 'SELECT * FROM `mycg`.`providers` WHERE `Address` LIKE '%$word%''; break;
    红色部分是实际的数据库名称,然后S_mode选“地址”,关键字随意,就会出现:2条警告信息:
    1、Division by zero in XXX
    2、mysqli_query() [function.mysqli-query]: Empty query in XXX
      

  3.   

    $sql = 'SELECT * FROM `mycg`.`providers` WHERE `Address` LIKE '%$word%''
    改成
    $sql = “SELECT * FROM `mycg`.`providers` WHERE `Address` LIKE '%$word%'”
      

  4.   

    谢谢,修改后倒是没有警告信息了,但是没有任何输出的记录。$result = mysqli_query($conn,$sql) or die('数据库查询失败!<br/>可能数据库中没有记录'); //SQL语句在这里执行
    if($result)  
    {
    echo $result;
    }会不会这样写输出语句有问题?
      

  5.   

    将 die('数据库查询失败!<br/>可能数据库中没有记录');
    改成 die("$sql<br>" . mysql_error());这样在出错时就可知道为什么错了
    switch 写的太乱,不便于检查正确性
      

  6.   

    是的 输出语句有问题你google哈php mysql查询例子
      

  7.   

    先echo $sql; 查询语句到mysql 终端去执行一下看看是否能正常的返回结果.
      

  8.   

    我发现只要能查到语句,就会提示警告信息如下:
    Catchable fatal error: Object of class mysqli_result could not be converted to string in
    如果查不到,就没有任何输出,一片空白!
      

  9.   


    修改die以后,输出sql语句如下:
    SELECT * FROM `$dbname`.`$tablename` WHERE `company` LIKE '%1%' OR `Birthday` LIKE '%1%' OR `QQ` LIKE '%1%' OR `Mobile` LIKE '%1%' OR `Email` LIKE '%1%' OR `tel` LIKE '%1%'
      

  10.   

    $result = mysqli_query($conn,$sql) 如果工作正常,返回的是mysqli_result的对象. 而echo只能输出字符串而不是一个对象。
    要想获取查询结果:
    $arr = $result->fetch_all(MYSQLI_ASSOC);
    var_dump($arr);
      

  11.   


    汗 
    算了我给你写吧
    你该看看php怎么用mysql查询
    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
            printf ($row);
        }
      

  12.   

    $result = mysqli_query($conn,$sql) or die('数据库查询失败!<br/>可能数据库中没有记录'); //SQL语句在这里执行
    在这儿之前你先输出你的SQL,然后到数据库执行看看有结果没。这样你就知道是哪儿错了