Hoi allemaal,

Ik heb in 2015 een website gebouwd. Nu heb ik hier heel wat jaren niks meer mee gedaan.
Afgelopen weekend begon het toch weer te kriebelen om weer eens in m'n archief te kijken.

M'n oude website wil ik weer een oppoetsen en opknappen anno 2023. Zo heb ik nu een zwaar vermoeden dat er iets fout staat in mn verbindingsgedeelte en het eerste Mysqli query.

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

try {
  $conn = new PDO("mysql:host=$servername;dbname=******", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully"; 
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}


// get content
function getContent($strKey){


	$tmp = mysqli_query("SELECT contentvalue FROM cms_content WHERE contentkey = '".FilterText($strKey)."' LIMIT 1") or die(mysqli_error());
	$tmp = mysqli_fetch_assoc($tmp);
    return $tmp['contentvalue'];

}


Wellicht zien jullie waar het hier mis gaat?
Wat wil je nu? PDO gebruiken of MySQLi? :-P

Mijn voorkeur heeft MySQLI, omdat daar de hele website is opgeschreven? Of kan ik op een eenvoudige manier omschakelen naar PDO? Dit is veiliger toch?
PDO heeft niks met veiligheid te maken, maar enkel de keuze op grond wat wat feiten.
https://websitebeaver.com/php-pdo-vs-mysqli

Je zegt dat de site gebouw is op MySQLi. Waarom heb je dan een connectie in PDO? Dat zal nooit werken omdat het een totaal andere driver is.

Keuze:
- PDO connectie herschrijven naar MySQLi, snel gedaan
- Alles herschrijven naar PDO, en een hoop (test)werk.

Aan jouw de keuze!
Ter aanvulling op wat Ariën heeft gezegd: aangezien je de procedurele aanroepen van mysqli gebruikt, mis ik in mysqli_query() en mysqli_error() ook als eerste parameter het mysqli-object (de met mysqli_connect() aangemaakte variant van $conn).

Ik vermoed dat de oude code gebruik maakte van mysql-functies. Daar was het optioneel om het connectie-object mee te geven; er werd dan doorgewerkt met de connectie die je het laatst had gebruikt. Dat gaf leuke problemen als je connecties naar meerdere databases had. Bij de mysqli-functies die er gebruik van maken moet het object dus wel altijd worden meegegeven.

Reageren