sql >> Database >  >> RDS >> Mysql

PHP-verbindingsfout met de database

de mysqli_select_db functie, wanneer u de procedurele API gebruikt, moet u een daadwerkelijke verbinding doorgeven als een eerste parameter, zoals weergegeven op de man-pagina's . Deze verbinding, of link, is wat mysqli_connect retourneert, dus je moet niet negeren wat mysqli_connect retourneert , maar wijs het liever toe aan een variabele.
De handtekening van de functie vertelt je dit duidelijk, dus alsjeblieft, RTM . Hier zijn een paar gekopieerde oefeningen:

                            \/=============================|
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 =======================|

Dit betekent dat je moet schrijven:

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

Net als de handmatige &&handtekeningshow, is deze mysqli_select_db geeft een bool terug. true betekent dat de DB met succes is geselecteerd, false duidt op een mislukking. Het is het beste om er een gewoonte van te maken het controleren van functieretourwaarden . Hoe triviaal het ook lijkt. Dus:

$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

Maar u kunt deze tweede functieaanroep eenvoudig weglaten door de DB-naam naar keuze door te geven aan de mysqli_connect functie vanaf het begin:

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

Dat bespaart u de overhead van een extra functie-aanroep, wat de prestaties iets verbetert. Ik heb ook de localhost . gewijzigd string naar het IP-adres 127.0.0.1, wat ook kan helpen, omdat het gebruik van het IP betekent dat de string niet hoeft te worden omgezet naar het corresponderende IP-adres.
Al met al denk ik dat het het beste is om wat tijd door te brengen documentatie lezen




  1. SQL WHERE-voorwaarde is niet gelijk aan?

  2. MySQL Triggers invoegen in een andere tabel

  3. Door komma's gescheiden tekenreeks ontleden om IN Lijst met tekenreeksen in de Where-component te maken

  4. Java MySQL JDBC-geheugenlek