【问题标题】:No database selected mysqli message [duplicate]没有数据库选择mysqli消息[重复]
【发布时间】:2016-03-03 17:09:00
【问题描述】:

我将项目中的 mysql 代码更改为 mysqli,但现在我收到消息“未选择数据库”,尽管所有数据库信息都在这里是代码:

<?php

define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');  // Your database Username
define('DB_PASSWORD', 'root'); // Your database Password
define('DB_DATABASE', 'social'); // Your database Name    
$connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysqli_error());
$database = mysqli_select_db($connection,DB_DATABASE) or die(mysqli_error());
mysqli_query($connection,$database);

mysqli_query($connection,"SET NAMES 'UTF8'");
mysqli_query($connection,"SET character_set_connection = 'UTF8'");
mysqli_query($connection,"SET character_set_client = 'UTF8'");
mysqli_query($connection,"SET character_set_results = 'UTF8'");  
$path = "uploads/";
$LogoPaht="css/icons/";
$conversation_uploads = "conversation_images/";
$profile_image_path = "user_profile_uploads/";
$admin_path = "../".$LogoPaht;
$admin_profile_path='../'.$profile_image_path;
$admin_path_uploads='../'.$path;
$profile_cover_pic_path = "user_profile_cover_uploads/"; // User Profile Cover File
$perpage=10; // Updates perpage
$base_url='http://localhost/sociall/'; // base_url
$admin_base_url=$base_url.'smadmin/'; // Admin base_url
$gravatar=0; // 0 false 1 true gravatar image
$rowsPerPage=1000000; //friends list
$profilePerPage=3;

/*SMTP Details */
$smtpUsername='yourname@gmail.com'; //yourname@gmail.com or you can use your webmail like somename@yourwebsitename.com
$smtpPassword='pass';  //gmail password or your webmail password
$smtpHost='ssl://mail.yourwebsitename.com'; //tls://smtp.gmail.com if yo
$smtpPort='465'; //465
$smtpFrom='yourname@gmail.com'; //yourname@gmail.com}
?>

【问题讨论】:

  • mysqli_query($connection, $database) 应该做什么? $database 是布尔值,而不是 SQL 查询字符串。
  • 仅供参考,您可以将数据库指定为mysqli_connect 的第四个参数,您不需要单独调用mysqli_select_db
  • mysqli_* 函数没有与 mysql_* 函数相同的 API。请查看手册并更新功能

标签: php mysqli


【解决方案1】:

删除线:

$database = mysqli_select_db($connection,DB_DATABASE) or die(mysqli_error());
mysqli_query($connection,$database);

通过将您的代码更改为以下代码,将数据库名称添加到您的连接建立请求中:

 define('DB_SERVER', 'localhost');
 define('DB_USERNAME', 'root');  // Your database Username
 define('DB_PASSWORD', 'root'); // Your database Password
 define('DB_DATABASE', 'social'); // Your database Name    

 // specify the database name when establishing the connection
 $connection = 
    mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE) or die(mysqli_error());

 /***
    If your code dies before this comment, somethings wrong with 
    your credentials, the db name, or the db's not running on the host 
    you're trying to connect to
 ***/


 // should be able to query away if connection succeeded...
 mysqli_query($connection,"SET NAMES 'UTF8'");
   ...
   ...

如果您的连接失败,可能是因为您的 mysql 设置为端口访问而不是套接字访问。更改 db 行进行测试:

 define('DB_SERVER', '127.0.0.1');

如果失败,您确定您使用的是套接字,请将其保留为 localhost 并验证您的用户对 mysql 数据库具有 localhost 权限。

【讨论】:

  • 我把我的代码改成了你的代码,但还是一样
  • @HeshamAbusaif 哪个特定查询 mysqli_query($connection,"...." ); 导致您看到的 Mysql 错误?
  • 没有 mysqli 错误,我刚收到一条消息,我认为所有查询都已完成,但我不知道为什么会收到此消息“没有数据库搜索”
  • $connection = mysqli_connect(...); 行之后,去掉die(mysqli_error()); 并做一个var_dump($connection); exit;。转储它是否显示连接对象?
  • 是的,我有 2 个对象,这是第一个:
猜你喜欢
  • 2013-05-01
  • 1970-01-01
  • 2017-01-31
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 2013-05-06
  • 1970-01-01
相关资源
最近更新 更多