sql >> Databasteknik >  >> RDS >> Mysql

PHP-anslutningsfel med databasen

mysqli_select_db funktion, när du använder det procedurmässiga API:t kräver att du skickar en faktisk anslutning som en första parameter, som visas på man-sidorna . Den här anslutningen, eller länken, är vad mysqli_connect returnerar, så du bör inte ignorera vad mysqli_connect returnerar , utan hellre tilldela den till en variabel.
Funktionens signatur berättar tydligt allt detta, så snälla, RTM . Här är några kopierade övningar:

                            \/=============================|
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 att du måste skriva:

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

Liksom den manuella &&-signaturen visar denna mysqli_select_db returnerar en bool. true betyder att DB har valts, false indikerar fel. Det är bäst att ta för vana att kontrollera funktionsreturvärden . Hur trivialt det än kan verka. 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 enkelt utelämna detta andra funktionsanrop genom att skicka det valda DB-namnet till mysqli_connect funktion från av:

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

Vilket sparar dig kostnaden för ett extra funktionsanrop, vilket förbättrar prestandan något. Jag har också ändrat localhost sträng till IP-adressen 127.0.0.1, vilket också kan hjälpa, eftersom användningen av IP betyder att strängen inte behöver lösas till motsvarande IP-adress.
Allt som allt tror jag att det är bäst att du spenderar lite tid läser dokumentationen




  1. Hur kan jag stoppa ett Postgres-skript när det stöter på ett fel?

  2. Välj MYSQL-rader men rader i kolumner och kolumner i rader

  3. Databasarkitektur för miljontals nya rader per dag

  4. mysql REGEXP matchar inte