【问题标题】:MySql connection [closed]MySql连接[关闭]
【发布时间】:2016-04-04 21:39:29
【问题描述】:
    <?php
// connect to MySQL
 $connect = new PDO ("localhost", "username", "")
 or die ( "Hey loser, check your server connection");

 // make sure we`re using the right database 
 mysql_select_db ( "moviesite");

 // insert data into "movie" table
 $insert= "INSERT INTO movie (movie_id, movie_name, movie_type,
    movie_year, movie leadactor, movie_director)".
"VALUES (1, 'Bruce Almighty', 5 , 2003, 1, 2), " .
"(2, 'Office Space', 5, 1999, 5, 6),".
"(3, 'Grand Canyon', 2, 1991, 4, 3)";
$results = mysql_query($insert)
or die (mysql_error());

// insert data into "movietype" table
$type = "INSERT INTO movietype (movietype_id, movietype_label) ".
"VALUES (1, 'Sci Fi'), " .
"(2, 'Drama'), " . 
"(3, 'Adventure'),".
"(4, 'War'),".
"(5,'Comedy'),".
"(6, 'Horror'),".
"(7,'Action'),".
"(8,'Kids')";
$results = mysql_query($type)
or die (mysql_error());
// insert data into "people" table
$people = "INSERT INTO people (people_id, people_fullname, " .
    "people_isactor, people_isdirector) " . 
"VALUES (1, 'Jim Carrey', 1, 0), " . 
"(2, 'Tom Shadyac', 0, 1), " .
"(3, 'Lawrence Kasdan', 0, 1) , " .
"(4, 'Kevin Kline', 1, 0), " .
"(5, 'Ron Livingston', 1, 0), " .
"(6, 'Mike Judge', 0, 1)"; 
$results = mysql_query($people)
or die (mysql_error());
echo "Data inserted succsesfully!";
?> 

大家好。我有个问题。当我运行这段代码时,我得到了这个错误:

( ! ) Fatal error: Uncaught exception 'PDOException'

有消息

'invalid data source name' in C:\wamp\www\moviedata.php on line 3 ( ! ) PDOException: invalid data source name in C:\wamp\www\moviedata.php on line 3

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

  • 异常告诉你问题是什么:'无效的数据源名称'。 PDO 构造函数的第一个参数必须是有效的 DSN,而 'localhost' 不是。阅读here 了解 DSN。
  • 也许是个骗局,但这个问题似乎并没有压倒 PDO,也许他面临着不同的问题。
  • 另外,如果你想把它从mysql转换成pdo,你需要把它全部转换。您不能让部分代码使用 pdo 而部分使用 mysql。

标签: php mysql


【解决方案1】:

你在打电话

mysql_select_db ( "moviesite");

但这不是 PDO 的一部分,它是 MySQL 的一部分。

你应该这样做:

$DB_HOST = "";
$DB_NAME = "";
$DB_PASS = "";
$DB_PORT = 3306;
$DB_USER = "";

$dsn = "mysql:host=" . $DB_HOST . ";port=" . $DB_PORT . ";dbname=" . $DB_NAME . ";charset=utf8";

$db_connection = new PDO($dsn, $DB_USER, $DB_PASS);

【讨论】:

  • 谢谢你...你刚刚保存了我的学校项目:p
【解决方案2】:

不要混合使用 mysql_* 函数和 PDO。
检查PDO_MySQL DSN 的语法。

<?php
$pdo = new PDO('mysql:host=localhost;dbname=moviesite;charset=utf8', 'username', '', array(
    PDO::ATTR_EMULATE_PREPARES=>false,
    PDO::MYSQL_ATTR_DIRECT_QUERY=>false,
    PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION
));

$pdo->exec("
    INSERT INTO movie
        (movie_id, movie_name, movie_type, movie_year, movie leadactor, movie_director)
    VALUES
        (1, 'Bruce Almighty', 5 , 2003, 1, 2),
        (2, 'Office Space', 5, 1999, 5, 6),
        (3, 'Grand Canyon', 2, 1991, 4, 3)
");
// and so on and on

【讨论】:

    猜你喜欢
    • 2014-12-18
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2013-10-16
    • 2014-10-03
    • 2015-12-25
    • 2021-01-18
    相关资源
    最近更新 更多