【问题标题】:Uncaught exception 'PDOException' with message 'invalid data source name' [duplicate]带有消息“无效数据源名称”的未捕获异常“PDOException”[重复]
【发布时间】:2018-07-04 04:00:46
【问题描述】:

我知道关于 stackoverflow 有很多问题,但我都阅读了它们,但我没有解决,所以我提出了新问题。我有一个名为 article.php 的文件,并且我有这个代码 init。只是一个显示错误的代码。

public static function getById( $id ) {
$conn = new PDO( DB_HOST, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE id = :id";
$st = $conn->prepare( $sql );
$st->bindValue( ":id", $id, PDO::PARAM_INT );
$st->execute();
$row = $st->fetch();
$conn = null;
if ( $row ) return new Article( $row );

我收到此错误:

Fatal error: Uncaught exception 'PDOException' with message 'invalid data source name' in C:\wamp64\www\classes\Article.php on line 102
( ! ) PDOException: invalid data source name in C:\wamp64\www\cms\classes\Article.php on line 102

我的配置文件看起来像

ini_set( "display_errors", true );
define( "DB_HOST", "localhost" );
define( "DB_USERNAME", "username" );
define( "DB_PASSWORD", "" );
define('DB_NAME', 'name');

你能告诉我为什么会发生这种情况以及我在哪里做错了吗?谢谢

【问题讨论】:

标签: php fatal-error


【解决方案1】:

您当前的代码之前似乎与mysqlmysqli 连接器一起使用,但是PDO 更通用,并且支持多个数据库供应商而不仅仅是MySQL。所以你需要告诉PDO连接哪个db等。

所以PDO 无法仅与数据库名称建立连接,您的DB_HOST 必须与此类似:

define('DB_HOST','mysql:host=localhost;dbname=testdb');

更多连接选项:

mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

得到这个错误 mysqli_real_escape_string() 需要 2 个参数,给定 1 个

您不需要这个,因为您使用的是 PDO。请改用 PDO 的 API。

【讨论】:

  • 能否展开回答
  • 现在我收到这个错误 mysqli_real_escape_string() 需要 2 个参数,1 个给定
  • $sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM article ORDER BY" 。 mysqli_real_escape_string($order)。 " 限制 :numRows";
  • @yoyoy 不要混用 API。使用准备好的语句。在此处寻求帮助之前,请先研究更多。
  • 现在如何处理这段代码 '$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM article ORDER BY" 。 mysqli_real_escape_string($order)。 " LIMIT :numRows'''
猜你喜欢
  • 2013-11-13
  • 1970-01-01
  • 2016-09-07
  • 2014-07-14
  • 2012-07-08
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多