我知道关于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');
您能告诉我为什么会发生这种情况以及我在哪里出错。谢谢
答案 0 :(得分:0)
您当前的代码似乎以前与mysql
或mysqli
连接器一起使用,但是PDO
更为通用,并支持多个数据库供应商,而不仅仅是MySQL。因此,您需要告诉PDO
要连接哪个数据库,等等。
因此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。