2009-12-02 4 views
0

Я вставляю значение дня в базу данных, я хочу, чтобы валидацию, как будто день уже существует, он должен сказать, что день уже существует, иначе он должен пропустить. Пожалуйста, не забудьте проверить следующий код ... заранее заблаговременноПожалуйста, проверьте правильность

$dexist=$_POST['ext']; 
$res=mysql_query("select Day from mess where Day='".$dexist."' "); 
while($row=mysql_fetch_array($res)) 
{ 
    $dy=$row['Day']; 
} 

if($dy==$dexist) 
{ 
    echo "<script language=\"javascript\">"; 
    echo "window.alert ('File already exist');"; 
    echo "//--></script>"; 

} 
else 
{ 
    mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')"); 
} 

ответ

0

Ваш сценарий кричит «SQL INJECTION!». Пожалуйста, назовите мой сайт!

Также: ваш код уязвим для проблем синхронизации. Например, файл может быть создан ПОСЛЕ того, как вы запустили инструкцию select, но ПЕРЕД тем, как вы запустили инструкцию INSERT. Это вызовет странные неудачи. Вот почему вы должны делать «выбор и вставку» в виде одной хранимой процедуры (чтение атомных операций - точнее, это пример «сравнения и свопинга»).

+0

извините, что это не файл if (file_exists ($ dy == $ dexist)), это должно выглядеть так: ($ dy == $ dexist) – bhoomi

+0

Нажмите «изменить» по вашему вопросу вносить изменения. И это помогло бы, если бы вы сказали, в чем проблема. – DisgruntledGoat

+0

как добавить голоса – bhoomi

0

Не делайте этого в PHP, это трудно (невозможно?), Чтобы сделать безопасно. Делайте это в MySQL, добавив уникальный индекс на Day колонки:

ALTER TABLE mess ADD UNIQUE (Day); 

Вы можете поймать неудачи такого рода, ища ER_DUP_UNIQUE с MySQL.

Используйте PHP mysql_errno, чтобы проверить ошибку 1169, чтобы уловить уникальный сбой.

$query_result = mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')"); 
// 1169 means a unique constraint failure 
if (!$query_result && mysql_errno() == 1169) { 
    echo "Oh noes, you tried to insert a value twice!"; 
} 
0

Во-первых никогда, никогда не проходит бесконтрольно POST/GET данные в запрос MySQL, это массивная дыра в безопасности. Используйте mysql_real_escape_string вместо:

$res=mysql_query("select Day from mess where Day='" . mysql_real_escape_string($dexist) . "' "); 

И аналогично для последнего вызова.

Во-вторых, неясно, что вы просите ... пожалуйста, сообщите нам, если код не работает где-нибудь, и любые ошибки, которые вы получаете. Я думаю, что у вас есть проблема с этой линией:

if(file_exists($dy==$dexist)) 

Это проходит логическое значение ($dy==$dexist будет оценивать с истинным или ложным) в функцию file_exists. Вам необходимо передать имя файла.

Смежные вопросы