SELECT query MariaDB verwerkt als string in PHP
-
- Berichten: 41
SELECT query MariaDB verwerkt als string in PHP
Goedemiddag,
Nou heb ik een paar dagen terug mijn eerste database aangemaakt en hierin wat tabellen met kolommen gemaakt.
Nu wil ik door middel van een functie wat selecteren en printen vanuit mijn database alleen krijg ik steeds de foutmelding:
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\PHP MYSQL\Xampp\htdocs\Projects\MysqlTest.php on line 17
Voorheen werkte mijn MySQL syntaxis op deze manier alleen dit lijkt niet te werken voor deze functie. Het is tevens de eerste SELECT query die ik probeer en het lijkt steeds of PHP de query wilt verwerken als string ipv SQL query.
//Connect to database
$conn = mysqli_connect($servername, $username, $password, $database);
//Termination Check
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//Function to select and print tables from database
function display_db_table($tablename, $conn) {
$query_string = "SELECT FearID FROM fears'";
$result_id = mysqli_query($query_string, $conn);
$column_count = mysqli_num_fields($result_id);
print ("<TABLE BORDER=1>\n");
while ($row = mysqli_fetch_row($result_id))
{
print ("< TR ALIGN=LEFT VALIGN=TOP>");
for ($column_num = 0; $column_num < $column_count; $column_numm++)
print ("<TD>$row[$column_num]</TD>\n");
print ("</TR>\n");
}
print ("</TABLE>\n");
}
?>
Ik heb hier alleen de functie zelf en de connectie geplaatst, niet mijn include bestanden en de manier hoe ik de functie aanroep, volgens mij is dit momenteel niet heel erg van belang verder.
Mocht het belangrijk zijn, ik probeer informatie uit een database 'mydb' te halen uit 2 tabellen 'fears' & 'persons' Ik heb de SELECT syntaxis wat versimpelt om te kijken of het daaraan lag, maar ik blijf dezelfde foutmelding krijgen. Mocht het verschil maken, ik gebruik MariaDB 10.1.38.
$query_String & $result_id zijn beide NULL aan het einde van de functie
Bij voorbaat dank!
Nou heb ik een paar dagen terug mijn eerste database aangemaakt en hierin wat tabellen met kolommen gemaakt.
Nu wil ik door middel van een functie wat selecteren en printen vanuit mijn database alleen krijg ik steeds de foutmelding:
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\PHP MYSQL\Xampp\htdocs\Projects\MysqlTest.php on line 17
Voorheen werkte mijn MySQL syntaxis op deze manier alleen dit lijkt niet te werken voor deze functie. Het is tevens de eerste SELECT query die ik probeer en het lijkt steeds of PHP de query wilt verwerken als string ipv SQL query.
//Connect to database
$conn = mysqli_connect($servername, $username, $password, $database);
//Termination Check
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//Function to select and print tables from database
function display_db_table($tablename, $conn) {
$query_string = "SELECT FearID FROM fears'";
$result_id = mysqli_query($query_string, $conn);
$column_count = mysqli_num_fields($result_id);
print ("<TABLE BORDER=1>\n");
while ($row = mysqli_fetch_row($result_id))
{
print ("< TR ALIGN=LEFT VALIGN=TOP>");
for ($column_num = 0; $column_num < $column_count; $column_numm++)
print ("<TD>$row[$column_num]</TD>\n");
print ("</TR>\n");
}
print ("</TABLE>\n");
}
?>
Ik heb hier alleen de functie zelf en de connectie geplaatst, niet mijn include bestanden en de manier hoe ik de functie aanroep, volgens mij is dit momenteel niet heel erg van belang verder.
Mocht het belangrijk zijn, ik probeer informatie uit een database 'mydb' te halen uit 2 tabellen 'fears' & 'persons' Ik heb de SELECT syntaxis wat versimpelt om te kijken of het daaraan lag, maar ik blijf dezelfde foutmelding krijgen. Mocht het verschil maken, ik gebruik MariaDB 10.1.38.
$query_String & $result_id zijn beide NULL aan het einde van de functie
Bij voorbaat dank!
-
- Berichten: 12.262
Re: SELECT query MariaDB verwerkt als string in PHP
Even uit mijn hoofd:
moet dat niet andersom, dus
zijn?
Code: Selecteer alles
$result_id = mysqli_query($query_string, $conn);
Code: Selecteer alles
$result_id = mysqli_query($conn, $query_string);
-
- Berichten: 41
Re: SELECT query MariaDB verwerkt als string in PHP
Benm schreef: ↑zo 01 dec 2019, 17:16 Even uit mijn hoofd:
moet dat niet andersom, dusCode: Selecteer alles
$result_id = mysqli_query($query_string, $conn);
zijn?Code: Selecteer alles
$result_id = mysqli_query($conn, $query_string);
Volgens mij niet, maar ik weet het niet zeker. Het voorbeeld wat ik vanuit mijn PHP en MySQL Wiley Bible gebruik zegt namelijk van niet. Wanneer ik het omdraai komt er ook alleen een boolean uit.
Ik denk ook eerder dat de fout aan de syntaxis ligt van SQL, want ik krijg tevens deze foutmelding:
Error loading data from database: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM 'fears', 'persons' ' at line 1
- Berichten: 10.562
Re: SELECT query MariaDB verwerkt als string in PHP
Er staat een m teveel in $column_numm op regel 17
-
- Berichten: 41
Re: SELECT query MariaDB verwerkt als string in PHP
Inderdaad, bedankt!
Maar dit verhelpt tevens het probleem niet helaas
Maar dit verhelpt tevens het probleem niet helaas
-
- Berichten: 12.262
Re: SELECT query MariaDB verwerkt als string in PHP
Volgens de php.net documentatie is de volgorde voor mysqli_query toch echt eerst de link en dan de query, en ik gebruik dat in de praktijk ook zo. Ik sluit niet 100% uit dat het andersom ook werkt, al zou dat wel een undocumented feature zijn.N00b schreef: ↑zo 01 dec 2019, 22:40 Volgens mij niet, maar ik weet het niet zeker. Het voorbeeld wat ik vanuit mijn PHP en MySQL Wiley Bible gebruik zegt namelijk van niet. Wanneer ik het omdraai komt er ook alleen een boolean uit.
Ik denk ook eerder dat de fout aan de syntaxis ligt van SQL, want ik krijg tevens deze foutmelding:
Error loading data from database: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM 'fears', 'persons' ' at line 1
Of de query op zich geldig is of niet hangt af van de database - heb je geprobeerd deze query te doen via iets als phpmyadmin? Als je een tabel 'fears' hebt met een kolom 'FearID' zie ik zo snel niet wat er mis aan is. Let wel dat tabelnamen hoofdlettergevoelig zijn als het OS waarop je database dat ook is.
-
- Berichten: 41
Re: SELECT query MariaDB verwerkt als string in PHP
Goedemorgen!
Je hebt helemaal gelijk, ik heb gelijk mijn boek geraadpleegd en zag dat alle voorbeelden in mysql ipv mysqli zijn geschreven. Ik dacht oprecht dat de fout in mijn query zat wegens de foutmelding omtrent de SQL statement.
Hartstikke bedankt!
Je hebt helemaal gelijk, ik heb gelijk mijn boek geraadpleegd en zag dat alle voorbeelden in mysql ipv mysqli zijn geschreven. Ik dacht oprecht dat de fout in mijn query zat wegens de foutmelding omtrent de SQL statement.
Hartstikke bedankt!
- Berichten: 17.659
Re: SELECT query MariaDB verwerkt als string in PHP
Als je de procedurele stijl gebruikt bij
Verder lijkt het erop dat deze query mis gaat door een single quote teveel op het eind:
in SQL wordt dat dus:
En dat levert inderdaad een MySQL error op.
PS: welke editor gebruik je om je code te schrijven? Als je (onder Windows) bijvoorbeeld Notepad++ gebruikt, of Geany onder Linux dan krijg je door syntax highlighting beter inzicht in je mogelijke fouten. Of je kunt overwegen om bijvoorbeeld Netbeans IDE of Visual Studio Code te gebruiken; die zijn een stuk uitgebreider maar wijzen je ook op fouten in je syntax.
Voor database werk kan ik MySQL Workbench aanbevelen.
Allemaal gratis programma's trouwens.
mysqli_*
functies, dan moet je inderdaad de parameter volgorde gebruiken die @Benm benoemt.Verder lijkt het erop dat deze query mis gaat door een single quote teveel op het eind:
Code: Selecteer alles
$query_string = "SELECT FearID FROM fears'";
Code: Selecteer alles
SELECT FearID FROM fears'
PS: welke editor gebruik je om je code te schrijven? Als je (onder Windows) bijvoorbeeld Notepad++ gebruikt, of Geany onder Linux dan krijg je door syntax highlighting beter inzicht in je mogelijke fouten. Of je kunt overwegen om bijvoorbeeld Netbeans IDE of Visual Studio Code te gebruiken; die zijn een stuk uitgebreider maar wijzen je ook op fouten in je syntax.
Voor database werk kan ik MySQL Workbench aanbevelen.
Allemaal gratis programma's trouwens.
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -
- Jimi Hendrix -
-
- Berichten: 41
Re: SELECT query MariaDB verwerkt als string in PHP
Inderdaad, het lukte maar niet om de query voor elkaar te krijgen en ik dacht oprecht dat het aan mijn SQL syntax lag, hierdoor heb ik veel veranderd om te kijken of ik het nog kon laten werken. Dit in combinatie met het foute gebruik van mysqli_query, leverde de foutmelding op!Ger schreef: ↑ma 02 dec 2019, 08:59 Als je de procedurele stijl gebruikt bijmysqli_*
functies, dan moet je inderdaad de parameter volgorde gebruiken die @Benm benoemt.
Verder lijkt het erop dat deze query mis gaat door een single quote teveel op het eind:in SQL wordt dat dus:Code: Selecteer alles
$query_string = "SELECT FearID FROM fears'";
En dat levert inderdaad een MySQL error op.Code: Selecteer alles
SELECT FearID FROM fears'
Bedankt voor de extra verheldering!
- Berichten: 17.659
Re: SELECT query MariaDB verwerkt als string in PHP
Zie mijn PS hierboven.
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -
- Jimi Hendrix -
-
- Berichten: 41
Re: SELECT query MariaDB verwerkt als string in PHP
Oh super tip, bedankt!
Ik gebruik momenteel Notepad++ precies om die redenen, voorheen met Java en PHP werkte dit perfect maar ik ga me eens verdiepen in Workbench.
Ik vind het namelijk best lastig dat SQL steeds weergegeven wordt als een string icm PHP in Notepad++.
Ik gebruik momenteel Notepad++ precies om die redenen, voorheen met Java en PHP werkte dit perfect maar ik ga me eens verdiepen in Workbench.
Ik vind het namelijk best lastig dat SQL steeds weergegeven wordt als een string icm PHP in Notepad++.
-
- Berichten: 12.262
Re: SELECT query MariaDB verwerkt als string in PHP
Scherp gezien van die extra quote!
Wat editors betreft: heb jij iets dat zowel syntax van php als sql highlight in hetzelfde bestand? Ik gebruik zelf meestal Komodo edit, dat werkt lekker voor php, maar inline sql doet het verder niets mee. Ik vraag me af hoe/of een editor kan zien dat een string sql is - tenzij je die misschien direct in een mysqli_ functie invoert en dat de herkenning is?
Wat editors betreft: heb jij iets dat zowel syntax van php als sql highlight in hetzelfde bestand? Ik gebruik zelf meestal Komodo edit, dat werkt lekker voor php, maar inline sql doet het verder niets mee. Ik vraag me af hoe/of een editor kan zien dat een string sql is - tenzij je die misschien direct in een mysqli_ functie invoert en dat de herkenning is?
- Berichten: 17.659
Re: SELECT query MariaDB verwerkt als string in PHP
Niet. Een string is een string, ongeacht wat je erin gooit.
Echter, veelal maak ik gebruik van een framework met een query builder waarbij je diverse elementen van je query in aparte functies opbouwt. Bijvoorbeeld Doctrine in Symfony of de ingebakken query builder van CodeIgniter.
Als je echt complexe queries in een string gaat proppen, moet je gewoon zorgen dat je goed bent in debuggen.
Echter, veelal maak ik gebruik van een framework met een query builder waarbij je diverse elementen van je query in aparte functies opbouwt. Bijvoorbeeld Doctrine in Symfony of de ingebakken query builder van CodeIgniter.
Als je echt complexe queries in een string gaat proppen, moet je gewoon zorgen dat je goed bent in debuggen.
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -
- Jimi Hendrix -
-
- Berichten: 12.262
Re: SELECT query MariaDB verwerkt als string in PHP
Ah, dacht ik al... als ze echt complex worden test ik ze meestal wel met phpmyadmin - dan geeft wel syntax highlighting voor de sql.