SQL werkt niet met speciale tekens + Errors?
Hallo allen,
hier ben ik wederom ö En da's niet echt leuk :p
Allezinds....
Mijn PHP is:
Mijn SQL is (geecho'd):
"SELECT * FROM `atleten` WHERE Achternaam='Vanderheyden' AND Voornaam='Amélie' AND Geboortedatum = '2003-08-21' AND Lifenr='11001' "
Als ik deze uitvoer in mijn DB zelf, heb ik geen problemen. Echter bij het uitvoeren op deze pagina mislukt het telkens. Als ik error_reporting(E_ALL);
doe krijg ik volgende fouten:
PHP Error Message
Notice: Use of undefined constant voornaam - assumed 'voornaam' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 151
Free Web Hosting
PHP Error Message
Notice: Use of undefined constant achternaam - assumed 'achternaam' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 152
Free Web Hosting
PHP Error Message
Notice: Use of undefined constant geboortedatum - assumed 'geboortedatum' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 153
Free Web Hosting
PHP Error Message
Notice: Use of undefined constant lifenr - assumed 'lifenr' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 154
Free Web Hosting
SELECT * FROM `atleten` WHERE Achternaam='Vanderheyden' AND Voornaam='Amélie' AND Geboortedatum = '2003-08-21' AND Lifenr='11001'
PHP Error Message
Notice: Undefined variable: Geboorte in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 190
Free Web Hosting
Het rare is, als ik een SQL uitvoer met 'normale' tekens (geen é, ç, à, ...) bv.. "SELECT * FROM `atleten` WHERE Achternaam='Peeters' AND Voornaam='Olivier' AND Geboortedatum = '1991-10-16' AND Lifenr='5555555' " heb ik geen enkel probleem (enkel wel die foutmeldingen).
Wat doe ik mis?
Groeten,
Olivier
hier ben ik wederom ö En da's niet echt leuk :p
Allezinds....
Mijn PHP is:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$sql = "SELECT * FROM `atleten` WHERE Achternaam='$achternaam' AND Voornaam='$voornaam' AND Geboortedatum = '$geboortedatum' AND Lifenr='$lifenr' ";
$stmt = $db->prepare($sql);
$stmt->bindParam(':Naam', $Naam, PDO::PARAM_INT);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
// Do something
}
?>
$sql = "SELECT * FROM `atleten` WHERE Achternaam='$achternaam' AND Voornaam='$voornaam' AND Geboortedatum = '$geboortedatum' AND Lifenr='$lifenr' ";
$stmt = $db->prepare($sql);
$stmt->bindParam(':Naam', $Naam, PDO::PARAM_INT);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
// Do something
}
?>
Mijn SQL is (geecho'd):
"SELECT * FROM `atleten` WHERE Achternaam='Vanderheyden' AND Voornaam='Amélie' AND Geboortedatum = '2003-08-21' AND Lifenr='11001' "
Als ik deze uitvoer in mijn DB zelf, heb ik geen problemen. Echter bij het uitvoeren op deze pagina mislukt het telkens. Als ik error_reporting(E_ALL);
doe krijg ik volgende fouten:
PHP Error Message
Notice: Use of undefined constant voornaam - assumed 'voornaam' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 151
Free Web Hosting
PHP Error Message
Notice: Use of undefined constant achternaam - assumed 'achternaam' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 152
Free Web Hosting
PHP Error Message
Notice: Use of undefined constant geboortedatum - assumed 'geboortedatum' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 153
Free Web Hosting
PHP Error Message
Notice: Use of undefined constant lifenr - assumed 'lifenr' in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 154
Free Web Hosting
SELECT * FROM `atleten` WHERE Achternaam='Vanderheyden' AND Voornaam='Amélie' AND Geboortedatum = '2003-08-21' AND Lifenr='11001'
PHP Error Message
Notice: Undefined variable: Geboorte in /home/a5852590/public_html/Inschrijvingen/gegevens.php on line 190
Free Web Hosting
Het rare is, als ik een SQL uitvoer met 'normale' tekens (geen é, ç, à, ...) bv.. "SELECT * FROM `atleten` WHERE Achternaam='Peeters' AND Voornaam='Olivier' AND Geboortedatum = '1991-10-16' AND Lifenr='5555555' " heb ik geen enkel probleem (enkel wel die foutmeldingen).
Wat doe ik mis?
Groeten,
Olivier
Je bind een parameter die niet in de query voorkomt.
En het is ook véél beter om je variabelen buiten quotes te houden.
En het is ook véél beter om je variabelen buiten quotes te houden.
als je deze query hebt..
dan verdien je het ook om een ö te krijgen!
de query hoort allereerst zo
(omdat je prepared statement gebruikt) en sowieso moeten variabelen buiten quotes..
en sinds wanneer is een Naam een int?
ik hoop toch echt dat je dit bedoelt...
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT * FROM `atleten` WHERE Achternaam='$achternaam' AND Voornaam='$voornaam' AND Geboortedatum = '$geboortedatum' AND Lifenr='$lifenr' ";
?>
$sql = "SELECT * FROM `atleten` WHERE Achternaam='$achternaam' AND Voornaam='$voornaam' AND Geboortedatum = '$geboortedatum' AND Lifenr='$lifenr' ";
?>
dan verdien je het ook om een ö te krijgen!
de query hoort allereerst zo
(omdat je prepared statement gebruikt) en sowieso moeten variabelen buiten quotes..
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT achternaam, voornaam, geboortedatum FROM atleten WHERE Achternaam = :achternaam AND Voornaam= :voornaam ";
?>
$sql = "SELECT achternaam, voornaam, geboortedatum FROM atleten WHERE Achternaam = :achternaam AND Voornaam= :voornaam ";
?>
en sinds wanneer is een Naam een int?
ik hoop toch echt dat je dit bedoelt...
Hallo allen,
de code dient dus zo te zijn?
Zelfde probleem, met een é werkt dit niet. Normaal werkt dit wel? Moet ik htmlentities gebruiken?
(*) * Dat sterretje verander ik straks wel door de 15 kolommen die geselecteerd moeten worden :-)
Groeten,
Olivier
de code dient dus zo te zijn?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sql = "
SELECT *
FROM atleten
WHERE Achternaam=:achternaam AND Voornaam=:voornaam AND Geboortedatum=:geboortedatum AND Lifenr=:lifenr ";
$stmt = $db->prepare($sql);
$stmt->bindParam(':achternaam', $_GET['achternaam'], PDO::PARAM_STR);
$stmt->bindParam(':voornaam', $_GET['voornaam'], PDO::PARAM_STR);
$stmt->bindParam(':geboortedatum', $_GET['geboortedatum'], PDO::PARAM_STR);
$stmt->bindParam(':lifenr', $_GET['lifenr'], PDO::PARAM_INT);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
// DO
}
?>
$sql = "
SELECT *
FROM atleten
WHERE Achternaam=:achternaam AND Voornaam=:voornaam AND Geboortedatum=:geboortedatum AND Lifenr=:lifenr ";
$stmt = $db->prepare($sql);
$stmt->bindParam(':achternaam', $_GET['achternaam'], PDO::PARAM_STR);
$stmt->bindParam(':voornaam', $_GET['voornaam'], PDO::PARAM_STR);
$stmt->bindParam(':geboortedatum', $_GET['geboortedatum'], PDO::PARAM_STR);
$stmt->bindParam(':lifenr', $_GET['lifenr'], PDO::PARAM_INT);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
// DO
}
?>
Zelfde probleem, met een é werkt dit niet. Normaal werkt dit wel? Moet ik htmlentities gebruiken?
(*) * Dat sterretje verander ik straks wel door de 15 kolommen die geselecteerd moeten worden :-)
Groeten,
Olivier
Goedendag,
Ik heb een iets ander probleem, maar wel verwand.
Bij mij is het probleem bij het weg schrijven van de é.
De query die ik uitvoer is:
UPDATE product_description SET name='Test é',description='Test met een é',language_id = '2' WHERE product_id = '2885'
De code die ik gebruik is alsvolgt
Als ik daarna de waarde bekijk via php is de waarde in het veld name 'Test é' en in description 'Test met een é'
De structuur van de table is:
Kolom Type Collatie Attributen Null Standaardwaarde
product_id int(11) Nee Geen AUTO_INCREMENT
language_id int(11) Nee Geen
name varchar(255) utf8_bin Nee Geen
description text utf8_bin Nee Geen
Als ik de zelfde query uitvoer via PhpMyAdmin dan gaat het wel goed.
Weet misschien iemand wat ik fout doe??
Alvast bedankt!!
Arvid
Ik heb een iets ander probleem, maar wel verwand.
Bij mij is het probleem bij het weg schrijven van de é.
De query die ik uitvoer is:
UPDATE product_description SET name='Test é',description='Test met een é',language_id = '2' WHERE product_id = '2885'
De code die ik gebruik is alsvolgt
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database,$db_handle);
$log->lwrite($query);
if ($db_found) {
$result = mysql_query($query,$db_handle);
mysql_close($db_handle);
}else {
$log->lwrite("Database NOT Found ");
mysql_close($db_handle);
}
$db_found = mysql_select_db($database,$db_handle);
$log->lwrite($query);
if ($db_found) {
$result = mysql_query($query,$db_handle);
mysql_close($db_handle);
}else {
$log->lwrite("Database NOT Found ");
mysql_close($db_handle);
}
Als ik daarna de waarde bekijk via php is de waarde in het veld name 'Test é' en in description 'Test met een é'
De structuur van de table is:
Kolom Type Collatie Attributen Null Standaardwaarde
product_id int(11) Nee Geen AUTO_INCREMENT
language_id int(11) Nee Geen
name varchar(255) utf8_bin Nee Geen
description text utf8_bin Nee Geen
Als ik de zelfde query uitvoer via PhpMyAdmin dan gaat het wel goed.
Weet misschien iemand wat ik fout doe??
Alvast bedankt!!
Arvid
Het probleem met de speciale tekens komt vaker voorbij, ook bij mij :-)
Hier mijn topic met mijn uiteindelijke oplossing: http://www.phphulp.nl/php/forum/topic/opgelost-juiste-character-set-gebruiken-mysqlphphtml/85169/
Hier mijn topic met mijn uiteindelijke oplossing: http://www.phphulp.nl/php/forum/topic/opgelost-juiste-character-set-gebruiken-mysqlphphtml/85169/
Ik heb mijn code iets gewijzigd:
Echter ik krijg dan fouten op de toegevoegde regel:
PHP Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/public_html/xml/test.php on line 57
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database,$db_handle);
$log->lwrite($query);
if ($db_found) {
// Force UTF-8.
mysql_query("SET names utf8, COLLATION_CONNECTION='utf8_bin', CHARACTER SET utf8", $db_handel);
$result = mysql_query($query,$db_handle);
mysql_close($db_handle);
$log->lwrite("Records added to the database $result.");
}
else {
$log->lwrite("Database NOT Found ");
mysql_close($db_handle);
}
$db_found = mysql_select_db($database,$db_handle);
$log->lwrite($query);
if ($db_found) {
// Force UTF-8.
mysql_query("SET names utf8, COLLATION_CONNECTION='utf8_bin', CHARACTER SET utf8", $db_handel);
$result = mysql_query($query,$db_handle);
mysql_close($db_handle);
$log->lwrite("Records added to the database $result.");
}
else {
$log->lwrite("Database NOT Found ");
mysql_close($db_handle);
}
Echter ik krijg dan fouten op de toegevoegde regel:
PHP Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/public_html/xml/test.php on line 57
Dat is een logische melding aangezien je daar gewoon mysql_query("SET names utf8, COLLATION_CONNECTION='utf8_bin', CHARACTER SET utf8", $db_handel); hebt staan.
declareer het eens aan je $query, dus zo
declareer het eens aan je $query, dus zo




