[英]Unable to connect to MySQL through PHP, mysql works, but not using mysqli or PDO
[英]connect to mysql through php with pdo
我正在使用php,並嘗試通過pdo與mysql建立連接。 我讀過我必須先擁有pdo擴展名(不知道我是否這樣做,也不知道如何檢查)。 我已經將phpmyadmin的config.inc.php文件更改為大聲的外部連接。 看起來像這樣:
<?php
/* Servers configuration */
$i = 0;
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'localhost';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '8000';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'http';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'http'; ////I've also try with config here
$cfg['Servers'][$i]['user'] = 'xxxx';
$cfg['Servers'][$i]['password'] = 'xxxxx';
$cfg['Servers'][$i]['AllowNoPasswordRoot'] = true;
?>
我的PHP文件是這樣的:
function connect() {
global $pdo;
$pdo = new PDO("mysql:host=localhost:8000;dbname=sakila", "xxxx", "xxxxxx");
}
function get_actors_by_last_name($letter){
global $pdo;
$stmt = $pdo->prepare('
SELECT actor_id, first_name, get_actors_by_last_name
from actor
where first_name like :letter
limit 50');
$stmt->execute( array(':letter' => $letter . '%' ));
return $stmt->fetchAll( PDO::FETCH_OBJ);
}
?>
該頁面是一種簡單的形式,可以根據演員姓名的第一個字母來帶出演員的姓名。 每次嘗試使其工作時,頁面庫存在加載時都不會帶給我任何東西,這不是問題也不例外。 如果我更改了host參數,並使用這樣的mysql來放置主機名值(在真實代碼中為真實主機值):
$pdo = new PDO("mysql:host=mysql.value;dbname=sakila", "xxxx", "xxxxxx");
我收到此消息:
致命錯誤:/Users/josecarro/Desktop/jquery/ajax/dataBase/functions.php中,消息“ SQLSTATE [HY000] [1130]主機'xxxx'不允許連接到此MySQL服務器”的未捕獲異常'PDOException': 13堆棧跟蹤:#0 /Users/josecarro/Desktop/jquery/ajax/dataBase/functions.php(13):PDO-> __ construct('mysql:host = MacB ...','xxxx','xxxx', NULL)#1 /Users/josecarro/Desktop/jquery/ajax/dataBase/index.php(7):connect()#2 {main}放在/Users/josecarro/Desktop/jquery/ajax/dataBase/functions.php中在第13行
這使我相信pdo擴展實際上是有效的。 要打開服務器並在文件所在目錄的終端上使用此行:
open http://localhost:8000 && python -m SimpleHTTPServer
並在同一目錄中以
php -S localhost:8000
我不知道出什么問題了。 盡管我相信我擁有pdo,但我嘗試使用phpbrew安裝它(以防萬一),安裝另一個php版本(7.0.7)。 但是當我嘗試使用
phpbrew ext install pdo-mysql
其實我真的不知道我在做什么。 我在php文檔中看到您必須像這樣進行編譯:
--with-pdo-mysql[=DIR]
我不知道這意味着什么……正如您所看到的,我很迷路。 我認為它可能比我想的要容易,但是我不知道該怎么做,該怎么做。 請幫助!!!
我將在此處進行一些更改,而不是將PDO作為功能,而是創建一個名為“ connection.php”的新頁面,並將其包含在需要連接的任何頁面上。 例如:
<?php
try{
$pdo= new PDO("mysql:dbname=NAME; host=localhost; charset=utf8", "username", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
?>
包括頁面:
include('connection.php');
要么
require_once('connection.php');
更改
return $stmt->fetchAll( PDO::FETCH_OBJ);
至
$result[] = $stmt->fetchAll(PDO::FETCH_ASSOC);
然后在一個foreach循環中迭代每個結果,具體取決於結果集之前您有多少個外部數組,您可能需要1-2個foreach循環。
例如:
foreach($result as subResult){
foreach($subresult as $rows){
echo $rows['actor_id'];
//or do a var_dump($rows);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.