У меня есть следующая форма:
<form action="doThis.php?warehouse=12" method="post"> <input name="field1" type="text" /> <input name="field2" type="text" /> </form>
И doThis.php
:
$field1 = mysql_real_escape_string($_POST['field1'], $mysql); $field2 = mysql_real_escape_string($_POST['field2'], $mysql); $warehouse = $_GET['warehouse']; if ( !someTableNameValidation($warehouse) ) { someErrorHandling(); } $qry = "INSERT INTO table".$warehouse." ( field1, field2 ) VALUES( '$field2', '$field2') "; $result = @mysql_query($qry, $mysql);
Как вы можете видеть, я использую $ _POST для получения данных из формы и $ _GET для получения переменной $warehouse
которая используется для указания номера таблицы.
Могу ли я использовать одновременно $ _POST & $ _GET? Правильно ли это использование?
Да, я всегда это делаю.
Также обратите внимание, что никогда не следует использовать mysql_query. Поиск php PDO
. Не говоря уже о ужасном @
для подавления ошибки
Да, это возможно. Но вы также можете использовать скрытое поле:
<form action="doThis.php"> <input type="hidden" name="warehouse" value="12" /> <input name="field1" type="text" /> <input name="field2" type="text" />
Имейте в виду, что ваш код очень уязвим для SQL-инъекций !
Да, вы могли бы. $_GET['warehouse']
будет выведен из строки запроса, переменные $_POST
из представленных значений POST.
Да, однако это должно быть:
$field1 = $_POST['field1']; $field2 = $_POST['field2']; $warehouse = $_GET['warehouse']; $qry = "INSERT INTO table".$warehouse." ( field1, field2 ) VALUES ('".mysql_real_escape_string($field2)."', '".mysql_real_escape_string($field2)."')"; $result = @mysql_query($qry);
(Фиксированный синтаксис)
Я часто использую POST и GET вместе, так что сторона PHP может знать, была ли она обычной подачей формы или через AJAX.
<form action='dest.php'> . . .
против
ajaxSubmit( 'dest.php?a=1', ... );