- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
function getTestDataById ($testid) {
$query="select * from mdl_test where id=".$testid."";
$result = mysql_query($query) or die('getTestDataById query failed: ' . mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$courseid=$row['courseid'] ;
$moduleid=$row['moduleid'];
$name=$row['name'];
$maxscore=$row['maxscore'];
$successscore=$row['successscore'];
$attempts=$row['attempts'];
$dur=$row['dur'];
$showsuccessmessage=$row['showsuccessmessage'];
$successmessage=$row['successmessage'];
$showfailedmessage=$row['showfailedmessage'];
$failedmessage=$row['failedmessage'];
$showtestsuccessmessage=$row['showtestsuccessmessage'];
$testsuccessmessage=$row['testsuccessmessage'];
$showtestfailedmessage=$row['showtestfailedmessage'];
$testfailedmessage=$row['testfailedmessage'];
$freequestions=$row['freequestions'];
$questionsorder=$row['questionsorder'];
$defertest=$row['defertest'];
$totalperpage=$row['totalperpage'];
$showcorrectreply=$row['showcorrectreply'];
$showscore=$row['showscore'];
$limittype = $row['limittype'];
$annotation = $row['annotation'];
} // end while
$res=array('courseid'=>$courseid,
'moduleid'=>$moduleid,
'name'=>stripslashes($name),
'maxscore'=>$maxscore,
'successscore'=>$successscore,
'attempts'=>$attempts,
'dur'=>$dur,
'showsuccessmessage'=>$showsuccessmessage,
'successmessage'=>stripslashes($successmessage),
'showfailedmessage'=>$showfailedmessage,
'failedmessage'=>stripslashes($failedmessage),
'showtestsuccessmessage'=>stripslashes($showtestsuccessmessage),
'testsuccessmessage'=>stripslashes($testsuccessmessage),
'showtestfailedmessage'=>stripslashes($showtestfailedmessage),
'testfailedmessage'=>stripslashes($testfailedmessage),
'freequestions'=>stripslashes($freequestions),
'questionsorder'=>stripslashes($questionsorder),
'defertest'=>stripslashes($defertest),
'totalperpage'=>stripslashes($totalperpage),
'showcorrectreply'=>stripslashes($showcorrectreply),
'showscore'=>stripslashes($showscore),
'limittype' => stripslashes($limittype), // Total 21 items
'annotation' => stripslashes($annotation));
return $res;
} // end of function
bormand 09.03.2013 15:06 # 0
bot-minurast 09.03.2013 22:25 # 0
А вообще, начальник на то и начальник, чтобы в кодах оставался на уровне времени скачка по карьерной лестнице. У него сейчас другие орг. проблемы.
Учитывая первое предположение, можно было бы остановится на 6-й строчке: return mysql_fetch_assoc($result); // это если учесть валидность данных хранящихся в БД.
bormand 09.03.2013 23:02 # 0
Ну под случайной имелось в виду во-первых implementation defined и во-вторых зависящее от кучи факторов. Наверное правильнее было бы сказать неопределенную запись из тех, у которых id = $testid.
> Обычно id обзывают автоинкрементное поле в табличках
Обычно одну запись циклом не читают... Хотя кто знает, не видя структуры базы можно спорить бесконечно ;)
> Учитывая первое предположение, можно было бы остановится на 6-й строчке
Да, именно так. Ну будет единственное различие, что если добавятся новые поля, то и они вернутся. Но если это существенно - проще перечислить эти поля вместо * в селекте.
Krugly 10.03.2013 11:14 # 0
guest 09.03.2013 15:16 # 0
eth0 09.03.2013 16:40 # 0
Lowezar 09.03.2013 17:16 # 0
bot-minurast 09.03.2013 23:05 # +1
RaZeR 09.03.2013 21:25 # +1
bormand 09.03.2013 22:05 # 0
increazon 09.03.2013 23:36 # −1
У меня обычно это поля называлось бы так id_mdl_test
Так что не факт что здесь есть ошибка.
bormand 09.03.2013 23:51 # 0
Правильный ответ: а хуй бы ее знал, порядок без order by зависит от множества факторов.
> Так что не факт что здесь есть ошибка.
Факт, факт ;) В особенности если поле не автоинкрементное.
А вся копипаста в 8-30 и 34-56 отлично заменяется на манипуляции над row в целом. Я уж промолчу про SQL иньекцию, это было бы слишком банально.
bormand 10.03.2013 00:03 # 0
Достаточно вернуть false (что автоматически произойдет если работать с $row а не с его содержимым).
P.P.S. Если вы скажете, что автор намеренно ограничил список полей, чтобы при модификации не вернулись лишние, то я отвечу вам: "а какого ж хуя он пишет select * ?!".
P.P.P.S. Все, кажется перечислил все возможные ответы оппонентов, и ответил на них. Можно идти спать.
bormand 10.03.2013 00:10 # 0
increazon 10.03.2013 01:17 # 0
bormand 10.03.2013 01:59 # 0
А вообще все эти мэджик квоты да аддслеши это не безопасность, это ее иллюзия и зря потраченное время. Да и применяют их обычно через жопу и не к месту...
А фреймворки почему-то у пыхоновичков не в почете, видимо думают, что изучать фреймворк сложнее чем извергать говно. А зря.
Steex 10.03.2013 03:09 # +1
bot-minurast 10.03.2013 11:14 # +2
Да, уж 54 строки пишутся очень быстро. Быстрее чем одна. Вы какой-то бред несёте, уважаемый. Сразу видно человека обмазанного фрейвокрами с головы до ног, и совершенно не представляеющего принципов внутренней работы этих фейворков.
Предвосхищу ваши замечания: Нет, я уважаю фареймворки, и особенно их разработчиков. Но не боготворю их, а в некоторых случаях, целесообразнее вообще не использовать фреймворки.
santa_microbe 10.03.2013 07:11 # +1
bormand 10.03.2013 07:24 # +1
Ну почему же. Оно тут в каждой строчке кроме 1,2,5,7,31,33,57-59. Вот только оно всё какое-то унылое. Порадовала только строчка 6.
> почему народ минусует
Ну я, например, минусую не только не говно, но и портянки, в которых концентрация интересных вещей мала.
Lure Of Chaos 10.03.2013 11:31 # +2
santa_microbe 10.03.2013 13:09 # 0
А так да согласен, в общем и целом охота более качественных говнокодов
eth0 10.03.2013 19:44 # +2
P.S. Тут уже давным-давно ведутся творческие дискуссии на тему "что такое плюс". Пока что коллективным сознательным удалось выяснить, что это не показатель говнокодовости, но какой-то who-it-are-o-meter.
3.14159265 11.03.2013 19:06 # +1