Cum să vă conectați la baza de date MySQL în PHP? (Programare, Php, Mysql, Mysqli)

santho a intrebat.

Am un cod ca acesta pentru a mă conecta la baza de date a serverului meu:

<?php

$con = mysqli_connect("", "username", "password", "databasename");
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

Dar a afișat „Failed to connect to MySQL”, ce este în neregulă cu acest cod? Prima dată când îl încerc în serverul web, în timp ce localhost-ul meu a funcționat perfect.

Comentarii

  • Încercați să specificați hostname în mysqli_connect. –  > Por Dark 73.
  • Se datorează faptului că parametrul host nu este nici nul, nici setat. Este practic gol. Deci, mysql nu se poate conecta acum la „”. –  > Por Peter.
9 răspunsuri
Abdulla Nilam

mysqli_connect("","username" ,"password","databasename");//Server name cannot be NULL

utilizați loaclhost pentru numele serverului (în Loacl)

<?php
    $con = mysqli_connect("localhost","username" ,"password","databasename");

    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
?>

Sau puteți utiliza MySQLi Procedural

<?php
    $servername = "localhost";
    $username = "username";
    $password = "password";

    // Create connection
    $con = mysqli_connect($servername, $username, $password);

    // Check connection
    if (!$con) {
        die("Connection failed: " . mysqli_connect_error());
    }
    echo "Connected successfully";
?>

EDIT 01

$servername = "localhost";
$username = "root";
$password = "";

Comentarii

  • am încercat MySQLi Procedural, se afișează Connection failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) –  > Por santho.
  • Este serverul MySQL în funcțiune? Dacă este în funcțiune, reporniți serviciul. –  > Por Peter.
  • Am rezolvat-o, băieți, using current server ip address în loc de localhost sau 127.0.0.1.1!1 –  > Por santho.
  • dacă folosiți localhost este același rezultat. –  > Por Abdulla Nilam.
Dharman

Pentru a vă conecta la baza de date MySQL folosind mysqli trebuie să executați 3 linii de cod. Trebuie să activați raportarea erorilor, să creați o instanță a clasei mysqli și să setați setul de caractere corect.

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'username', 'password', 'dbname', 3307);
$mysqli->set_charset('utf8mb4'); // always set the charset

Parametrii din constructorul mysqli sunt toți opționali, dar de cele mai multe ori veți dori să treceți cel puțin 4 dintre ei. În ordinea corectă, aceștia sunt:

  1. MySQL Host. De cele mai multe ori aceasta este localhost, , dar dacă vă conectați la o gazdă de la distanță, aceasta va fi o altă adresă IP. Asigurați-vă că aceasta nu conține http partea de protocol. Ar trebui să fie fie o adresă IP, fie o adresă URL fără protocol.
  2. Nume de utilizator. Acesta este numele de utilizator al utilizatorului MySQL. Pentru a vă conecta la serverul MySQL, trebuie să aveți un utilizator valid și cu privilegiile corespunzătoare.
  3. Parola.
  4. Numele bazei de date. Acesta este numele bazei de date MySQL la care doriți să vă conectați.
  5. Port. De cele mai multe ori, portul implicit este cel corect, dar dacă folosiți de exemplu wampserver cu MariaDB, ar fi bine să îl schimbați la 3307.
  6. Socket name. Specifică socket-ul sau conducta numită care ar trebui să fie utilizată.

Din păcate, setul de caractere nu este unul dintre acești parametri, așa că trebuie să folosiți o funcție dedicată pentru a seta acest parametru foarte important.

Vă rugăm să aveți grijă să nu afișați niciodată manual erorile de conectare. Acest lucru este complet inutil și va duce la scurgeri de informații despre acreditările dumneavoastră.

O notă fără legătură: nu vă recomand să folosiți MySQLi într-un proiect nou. Vă rugăm să luați în considerare utilizarea PDO, , care este, în general, un API mult mai bun pentru conectarea la MySQL.

jackhammer013

De ce să folosiți mysqli? Folosiți doar PDO pentru o conexiune mysql mai sigură doar folosiți:

$hostname='localhost';
$username='root';
$password='';


$dbh = new PDO("mysql:host=$hostname;dbname=dbname",$username,$password);

Dark 73

Ar trebui să specificați hostname

  $con = mysqli_connect("localhost","username" ,"password","databasename");

Dacă returnează o eroare de genul

Nu s-a reușit conectarea la MySQL: Nu se poate conecta la serverul MySQL local prin intermediul socket-ului ‘/var/lib/mysql/mysql.sock’

Înlocuiți localhost cu 127.0.0.1.

Dacă în continuare nu vă puteți conecta, verificați dacă serverul mysql este în funcțiune.

service mysqld start

Apoi, încercați una dintre următoarele variante:

(dacă nu ați setat parola pentru mysql)

mysql -u root

dacă ați setat deja parola

mysql -u root -p

Pankaj Upadhyay
$localhost = "localhost";
    $root = "root";
    $password = "";
    $con = mysql_connect($localhost,$root,$password) or die('Could not connect to database');
    mysql_select_db("db_name",$con);

user8029840
<?php

$servername="";
$username=""; 
$password="";
$db="";

$conn=mysqli_connect($servername,$username,$password,$db);
//mysql_select_db($db);  
if (!$conn) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno($conn) . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error($conn) . PHP_EOL;
    exit;
}
@session_start();

$event_name = $_POST['first_name'];
$first_name = $_POST['last_name'];

$sql = "INSERT INTO customer(first_name, last_name,) VALUES ('$first_name', '$last_name')";

$conn->query($sql);
$lastInsertId = mysqli_insert_id($conn);

?>

Sarah Smith

O metodă mai bună este să păstrați separat parametrii de conectare și de autentificare.

<?php

class Database{

protected $url;
protected $user;
protected $passw;
protected $db;
protected $connection = null;

public function __construct($url,$user,$passw,$db){
    $this->url = $url;
    $this->user = $user;
    $this->passw = $passw;
    $this->db = $db;
}

public function __destruct() {
    if ($this->connection != null) {
        $this->closeConnection();
    }
}

protected function makeConnection(){
    //Make a connection
    $this->connection = new mysqli($this->url,$this->user,$this->passw,$this->db);
    if ($this->connection->connect_error) {
        echo "FAIL:" . $this->connection->connect_error;
    }
}

protected function closeConnection() {
    //Close the DB connection
    if ($this->connection != null) {
        $this->connection->close();
        $this->connection = null;
    }
}

protected function cleanParameters($p) {
    //prevent SQL injection
    $result = $this->connection->real_escape_string($p);
    return $result;
}

public function executeQuery($q, $params = null){
    $this->makeConnection();        
    if ($params != null) {
        $queryParts = preg_split("/?/", $q);
        if (count($queryParts) != count($params) + 1) {
            return false;
        }
        $finalQuery = $queryParts[0];
        for ($i = 0; $i < count($params); $i++) {
        $finalQuery = $finalQuery . $this->cleanParameters($params[$i]) . $queryParts[$i + 1];
        }
        $q = $finalQuery;
    }
    $results = $this->connection->query($q);

    return $results;

}
}?>

Acest lucru, în combinație cu o fabrică de baze de date, păstrează datele separate și curate.

<?php 
include_once 'database/Database.php';

class DatabaseFactory {
    private static $connection;

public static function getDatabase(){

   if (self::$connection == null) {
        $url = "URL";
        $user = "LOGIN";
        $passw = "PASSW";
        $db = "DB NAME";
        self::$connection = new Database($url, $user, $passw, $db);
    }
    return self::$connection;
}

} 
?>

După aceea, vă puteți face cu ușurință (pe bază de clasă) clasele CRUD (nume obiect+DB)

<?php
include_once "//CLASS";
include_once "//DatabaseFactory";

class CLASSDB
{
private static function getConnection(){
    return DatabaseFactory::getDatabase();
}
public static function getById($Id){
    $results = self::getConnection()->executeQuery("SELECT * from DB WHERE Id = '?'", array(Id));

    if ($results){
        $row = $results->fetch_array();
        $obj = self::convertRowToObject($row);
        return $obj;
    } else {
        return false;
    }
}
public static function getAll(){
    $query = 'SELECT * from DB';
    $results = self::getConnection()->executeQuery($query);
    $resultsArray = array();
    for ($i = 0; $i < $results->num_rows; $i++){
        $row = $results->fetch_array();
        $obj = self::convertRowToObject($row);
        $resultsArray[$i] = $obj;
    }
    return $resultsArray;
}
public static function getName($Id){
    $results = self::getConnection()->executeQuery("SELECT column from DB WHERE Id = '?'", array($Id));

        $row = $results->fetch_array();
        return $row['column'];
}
public static function convertRowToObject($row){
    return new CLASSNAME(
        $row['prop'],
        $row['prop'],
        $row['prop'],
        $row['prop']
    );
}
public static function insert ($obj){
    self::getConnection()->executeQuery("INSERT INTO DB VALUES (null, '?', '?', '?')",
        array($obj->prop, $obj->prop, $obj->prop));
}
public static function update ($propToUpdate, $Id){
    self::getConnection()->executeQuery("UPDATE User SET COLTOUPDATE = ? WHERE Id = ?",
        array($propToUpdate, $Id));
}
}

Și cu această codificare fină este floare la ureche să selectezi elemente în frontend:

include 'CLASSDB';

<php
$results = CLASSDB::getFunction();
        foreach ($results as $class) {  
?>
<li><?php echo $class->prop ?><li>
<php } ?>

Khaliq Izrail Haxor

Cel mai simplu mod de a vă conecta la serverul MySQL folosind php.

$conn=new mysqli("localhost", "Username", "Password", "DbName");
if($conn->connect_error)
{
    die("connection faild:".$conn->connect_error);
}
echo "Connection Successfully..!";

krishna

localhost în felul următor (MySQLi Procedural)

<?php

$servername ="localhost";

$username="username";//username like (root)

$password="password";//your database no password. (" ") 

$database="database";

$con=mysqli_connect($servername,$username,$password,$database);

if (!$con) {

    die("Connection failed: " . MySQL_connect_error());

}
else{

echo "Connected successfully";

}