簡體   English   中英

通過PDO通過PHP連接到MySQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM