sql >> Database teknologi >  >> RDS >> Mysql

PHP-forbindelsesfejl med databasen

mysqli_select_db funktion, når du bruger den proceduremæssige API kræver, at du sender en faktisk forbindelse som en første parameter, som vist på man-siderne . Denne forbindelse, eller link, er hvad mysqli_connect returnerer, så du bør ikke ignorere hvad mysqli_connect returnerer , men tildel den i stedet til en variabel.
Funktionens signatur fortæller dig tydeligt alt dette, så venligst RTM . Her er et par copy-pasted øvelser:

                            \/=============================|
bool mysqli_select_db ( mysqli $link , string $dbname )   ||
//returns bool         argument 1       argument 2        ||
mysqli mysqli_connect ([...])                             ||
//returns type mysqli  accepts vast number of arguments   ||
              //                                          ||
              |======== useful here =======================|

Det betyder, at du bliver nødt til at skrive:

$db = mysqli_connect('localhost', 'root', '');
mysqli_select_db($db, 'video_system');

Ligesom den manuelle &&-signatur viser denne mysqli_select_db returnerer en bool. true betyder, at DB'en blev valgt, false indikerer fejl. Det er bedst at vænne sig til at tjekke funktionsreturværdier . Uanset hvor trivielt det kan virke. Så:

$db = mysqli_connect('localhost', 'root', '');
if (!mysqli_select_db($db, 'video_system'))
{//if return value is false, echo error message and exit script
    echo 'Failed to select db "video_system": ', mysqli_error($db), PHP_EOL;
    $db = null;//optional, but generally safer
    exit(1);//stop execution
}
//db selected, get to work here

Men du kan nemt udelade dette andet funktionskald ved at videregive det valgte DB-navn til mysqli_connect funktion fra slukket:

$db = mysqli_connect('127.0.0.1', 'root', '', 'video_system');

Hvilket sparer dig for omkostningerne ved et ekstra funktionskald, hvilket forbedrer ydeevnen en smule. Jeg har også ændret localhost streng til IP-adressen 127.0.0.1, hvilket også kan hjælpe, fordi brug af IP betyder, at strengen ikke behøver at blive løst til den tilsvarende IP-adresse.
Alt i alt synes jeg, det er bedst at bruge lidt tid læser dokumentationen




  1. gem List<Model class> til sqlite

  2. Hvordan man laver Mysql JDBC-driver til android studio

  3. Udskrivning til skærm i .sql-fil postgres

  4. Hvordan kan jeg se kommandostrengen, når jeg bruger MySqlCommand-parametre?