mysql_query probleem

Status
Niet open voor verdere reacties.

webdev

Gebruiker
Lid geworden
29 jul 2011
Berichten
67
Hallo,

Ik ben bezig met een nieuwe project maar stuitte op een probleem!
als ik

Code:
function user_gebruikersnaam_exists($gebruikersnaam) {
    $gebruikersnaam = mysql_real_escape_string($gebruikersnaam);
    $check_gebruikersnaam_exists = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam`= $gebruikersnaam");
    $count_rows = mysql_num_rows($check_gebruikersnaam_exists);
    return $count_rows == 1 ? true : false;    
}


kreeg ik de melding ' Unknown column '' in 'where clause' ' en met or print mysql_error() erachter

<b>Warning</b>: mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>/var/www/vhosts/website.com/subdomains/project/httpdocs/php-functions/user.func.php</b> on line <b>27</b><br />

en dan stond er tussen de '' wat ik invulde en in $gebruikersnaam kwam. Als ik

Code:
$check_gebruikersnaam_exists = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam`= '$gebruikersnaam'");

bleek het wel te werken. Maar queries uit andere projecten zoals

Code:
$get_the_music = mysql_query("SELECT * FROM music WHERE `music_id`=$music_id") or print mysql_error();

werken wel gewoon?
Hoe kan dit?
 
Laatst bewerkt:
Hallo,

Ik ben bezig met een nieuwe project maar stuitte op een probleem!
als ik

Code:
function user_gebruikersnaam_exists($gebruikersnaam) {
    $gebruikersnaam = mysql_real_escape_string($gebruikersnaam);
    $check_gebruikersnaam_exists = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam`= $gebruikersnaam");
    $count_rows = mysql_num_rows($check_gebruikersnaam_exists);
    return $count_rows == 1 ? true : false;    
}


kreeg ik de melding ' Unknown column '' in 'where clause' ' en met or print mysql_error() erachter

<b>Warning</b>: mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>/var/www/vhosts/website.com/subdomains/project/httpdocs/php-functions/user.func.php</b> on line <b>27</b><br />

en dan stond er tussen de '' wat ik invulde en in $gebruikersnaam kwam. Als ik

Code:
$check_gebruikersnaam_exists = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam`= '$gebruikersnaam'");

bleek het wel te werken. Maar queries uit andere projecten zoals

Code:
$get_the_music = mysql_query("SELECT * FROM music WHERE `music_id`=$music_id") or print mysql_error();

werken wel gewoon?
Hoe kan dit?

Hallo webdev,

Je moet goed letten op de quotes en apostrofs. Een quote (dubbel " ") geeft aan, dat iets een string, stuk tekst is. Een variabele kan een string zijn, maar ook een integer of iets anders.
Over het algemeen is een variabele wel binnen dubbele quotes te gebruiken, maar is niet nauwkeurig. Ik zou de string even stoppen, de variabele toevoegen en doorgaan met de string (tekst).

Voorbeeld

Jouw code:
PHP:
<?php
     $check_gebruikersnaam_exists = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam`= '$gebruikersnaam'");
?>

Hoe ik het zou doen:
PHP:
<?php
     $check_gebruikersnaam_exists = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam` = '".$gebruikersnaam."'");
?>

Wat gebeurt er? Hij voegt de inhoudt van $gebruikersnaam toe aan de string (tekst). Op deze manier leest hij het niet als tekst, maar kijkt hij alleen naar wat er in $gebruikersnaam zit. Is het een getal? Dan voegt hij die toe.
Binnen de " ", leest PHP het eigenlijk als tekst, terwijl de variabele dat dus helemaal niet hoeft te zijn.

Compleet (hoe ik het zou doen):
PHP:
<?php
     function check_username($username) {
          $username = mysql_real_escape_string($username);
          $mysql_query = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam` = '".$username."'") or die("Error: ".mysql_error()); // Alleen de mysql_error() doen als je voor je zelf werkt of aan het debuggen bent.
          $count = mysql_num_rows($mysql_query);

          $return = $count == 1 ? true : false;
          
          return $return; 
}
?>

Gr. Ronald!:)
 
Nog een voorbeeld over de quotes:

PHP:
<?php
     $variabele = "appel";

     $string = "De $variabele valt niet ver van de boom";
     echo($string);

     // Output: De appel valt niet ver van de boom

     $string = 'De $variabele valt niet ver van de boom';
     echo($string);

     // Output: De $variabele valt niet ver van de boom

     // For the good order
     $string = "De ".$variabele." valt niet ver van de boom";
     // OF
     $string = 'De '.$variabele.' valt niet ver van de boom';
?>

Gr. Ronald!:)
 
Als ik

Code:
$check_gebruikersnaam_exists = mysql_query("SELECT * FROM `users` WHERE `gebruikersnaam`= '$gebruikersnaam'");

bleek het wel te werken. Maar queries uit andere projecten zoals

Code:
$get_the_music = mysql_query("SELECT * FROM music WHERE `music_id`=$music_id") or print mysql_error();

werken wel gewoon?
Hoe kan dit?

Even over deze vraag. Als je een getal wilt gebruiken in een query (zoals een id) hoef je daar geen aanhalingstekens omheen te zetten. Wil je een stuk tekst (zoals een gebruikersnaam) gebruiken dan moet je daar wel aanhalingstekens omheen zetten. Daarom werkt het bij de ene wel en bij de andere niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan