I have a problem with PDO, and I see absolutely no where he come. I can not question my MySQL database. Just to test I used the following code (having quite sour previously configured the parameters for the connection:
try {
$dbh= new PDO('mysql:host=serverName;dbname=Mydatabase','user','password');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
var_dump($dbh); // gives : object(PDO)#1 (0) { }
$res=$dbh->query('SELECT * FROM table');
The connection is made correctly with MySQL but after query I get this error:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in /home/outout/public_html/file.php:16 Stack trace: #0 /home/outout/public_html/file.php(16): PDO->query('select * from t...') #1 {main} thrown in /home/outout/public_html/file.php on line 16.
The code works on a local machine, but as soon as I put it online (cPanel) it shows me this error. Do I have to configure PDO in .htaccess?
I absolutely do not understand where the problem come. Someone would have an idea?
Help Mysql resolve the handle by.
Instead of:
$res=$dbh->query('SELECT * FROM table');
Try:
$res=$dbh->query('SELECT * FROM Mydatabase.table');
I faced the same problem while not mentioning the 'host' string with 'mysql' (mysql:host). I solved the problem by following code.
class Database{
protected static $pdo;
public function __construct(){}
public function connect(){
$dsn="mysql:host=localhost;dbname=dbname";
try{
self::$pdo = new PDO($dsn,"root","");
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'Connected';
return self::$pdo;
}catch(PDOException $ex){
echo $ex->getMessage();
}
return false;
}
public function getConnection(){
return self::$pdo;
}
}
Instead of:
$res=$dbh->query('SELECT * FROM table');
just do:
$res=$dbh->query('SELECT * FROM dbname.tablename');
You will be good to go.
I faced same problem. Resolution of problem was removed the space between hostname and dbname variable as follows: From: $conn = new PDO("mysql:host = $servername;dbname = $dbname", $username, $password);
To: $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With