Если «источником данных» является html-форма (предположительно с использованием method = «post»), вы должны использовать $ _POST ['username'], когда для register_globals установлено значение off
(что является значением по умолчанию, поскольку ... возрастов). см http://docs.php.net/security.globals
Также прочитайте http://php.net/manual/en/security.database.sql-injection.php
<?php
include"include/connection.php";
$query = "SELECT
*
FROM
employer
WHERE
eusername='". mysql_real_escape_string($username). "'
";
$checkusername=mysql_query($query) or die(mysql_error());
if (mysql_num_rows($checkusername)==1)
{
echo "username already exist";
}
else
{
$query = "INSERT INTO employer(efname,elname,egender,eemail,eusername,epwd,eadd,ephone,ecity,ecountry) values (". same mysql_real_escape_string() thing here for each parameter .")";
$result = mysql_query($query) or die (mysql_error());
echo " Thanks for registration";
}
?>
Вы также можете использовать подготовленные заявления . Таким образом, вам не нужно / не можете забыть использовать экранирующую функцию.
edit and btw: вам не нужен SELECT перед INSERT, чтобы сделать имя пользователя уникальным. На самом деле это будет еще сложнее, так как теперь вам приходится иметь дело с условиями гонки . Вам придется заблокировать таблицу между этими двумя запросами.
Если вы добавите уникальный index для имени пользователя в вашей таблице, MySQL не разрешит вставку дублета, а вместо этого вернет определенный код ошибки, который ваш скрипт может извлекать и обрабатывать без необходимости иметь дело с условиями гонки.
define('ER_DUP_ENTRY', 1062);
$mysql = mysql_connect('..', '..', '..');
mysql_select_db('..', $mysql) or die(mysql_error($mysql));
$fields = array(
'efname'=>'first_name',
'elname'=>'last_name',
'egender'=>'gender',
'eemail'=>'email',
'eusername'=>'username',
'epwd'=>'password',
'eadd'=>'address',
'ephone'=>'phone',
'ecity'=>'city',
'ecountry'=>'country'
);
$sqlparams = array();
foreach($fields as $sql=>$form) {
if ( !isset($_POST[$form]) ) {
die('missing post parameter '. $form);
}
$sqlparams[$sql] = "'".mysql_real_escape_string($_POST[$form], $mysql)."'";
}
$query = '
INSERT INTO
employer
'. join(', ', array_keys($sqlparams)) .'
VALUES
('.join(',', $sqlparams).')
';
// table:employer has been defined with "unique key idxName (eusername)"
$result = mysql_query($query, $mysql);
if ( false!==$result ) {
echo " Thanks for registration";
}
else if ( ER_DUP_ENTRY===mysql_errno($mysql) ) {
echo 'username already exists';
}
else {
echo 'an error occurred';
}