2014-01-13 3 views
-2

Привет, мне было интересно узнать, как получить идентификатор в URL-адресе, например php? Pid = 4, и использовать его в инструкции обновления в sql. Хорошо, это мой код, но не могу заставить его работать из-за неопределенного идентификатора переменной, значение которого находится в URL-адресе.Получить идентификатор из URL-адреса; PHP, MySQL

мой function.php

function update_spot(){ 

$id=$_GET[pid]; 
if (isset($_POST['update'])){ 
$sql="UPDATE reports SET date_time_started='$_POST[date1]' , 
    date_time_finished= '$_POST[date2]', 
    barangay='$_POST[brgy]', 
    street= '$_POST[street]', 
    owner='$_POST[owner]', 
cause='$_POST[cause]', 
motive='$_POST[motive]', 
firfighter='$_POST[firefighter]'. 
civilian='$_POST[civilian]', 
ifirefighter='$_POST[ifirefighter]', 
icivilian='$_POST[icivilian]', 
occupancy='$_POST[occupancy]', 
ed='$_POST[ed]', 
alarm='$_POST[alarm]' 

where id='".$id."' "; 

if (!mysql_query($sql)){ die('Error: ' . mysql_error()); } ?> 
<script type='text/javascript'>alert('sucessful changed try it next time you log 

in.');window.location='view_inbox.php';</script> <?php 
} 

} 

, кажется, я не могу получить идентификатор в URL. мой URL показать, как это в виде PHP? PID = 5

+2

Внимание, код очень подвержен внедрению sql –

+0

У вас есть '.' вместо' '' '' $ _POST [firefighter] '' – Phil

+1

Теперь вы должны использовать библиотеку' mysqli' или 'PDO', а не 'mysql'. Убедитесь, что вы дезинфицируете свои входы, иначе вы в основном предоставляете людям свободное владение над вашей базой данных. – vimist

ответ

0

Используйте котировки на $ доступ _GET массива

$pid = $_GET['pid']; 

Кроме того, вы смесительные $ _GET и $ _POST. Вы должны использовать тот или иной, в зависимости от метода вашей формы (GET или POST).

Вы также хотите изменить все области, к которым вы обращаетесь к нему. IE

barangay = '$_POST[brgy]'; 

Это должно быть, а все остальные строки после

barangay = $_POST['brgy']; 
+0

Ваш комментарий о смешивании GET и POST неверен. Вы можете использовать POST для URI с параметрами GET, и каждый набор данных будет доступен в соответствующем супер глобальном массиве ('$ _GET' и' $ _POST') – Phil

+0

спасибо за ответ. теперь я получил эту ошибку. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с. civilian = '1', ifirefighter = '3', icivilian = '8', занятие = 'Структурный', 'в строке 7 – jcbbea

+0

Я могу перефразировать, чтобы СЛЕДУЕТ сделать вас счастливыми, но это довольно запутанно, чтобы они были смешанными. – Rottingham

0
$pid = isset($_GET['pid']) ? 0 : intval($_GET['pid']) //to avoid problems in this case 
0

@Up, в приведенном выше примере, он все еще должен работать, но будет вызывать предупреждение о том, что PHP неопределенная константа PHP будет приниматься как строка.

Я бы сбросил глобальность и посмотрел, есть ли переменная, например var_dump ($ _ GET);

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