2015-04-15 2 views
0

Я создал таблицу и сохранил в ней значения. Таблица имеет уникальный идентификатор столбца «ID».Как получить одну строку из таблицы с помощью PHP?

Сейчас я создал бланк, где есть кнопка с пометкой Восстановить. Когда я ввожу ID и нажимаю кнопку Retrieve, я хочу просмотреть данные, соответствующие этому ID.

Как это сделать с помощью PHP и MYSQL?

У меня есть код ниже, но он не работает. Сообщение об ошибке не отображается. Но никаких проблем с подключением db нет. Остальные функции работают, за исключением «RETRIEVE».

<?php 
$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 
$dbname = 'DB'; 
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname); 
if(mysqli_connect_error()) 
{ 
die("couldn't connect" . $conn->connect_error()); 
} 
echo ("connected successfully"); 
$id = $_POST['Id']; 
$name = $_POST['Name']; 
$blood = $_POST['BloodGroup']; 


if(isset($_POST['insert'])){ 
     $insert = "Insert into ins(Id, name, BloodGroup) values ('$id','$name', '$blood')" ; 
     if($conn->query($insert) === TRUE) { 
     echo ("Input data entered successfully"); 
     } else { 
     echo ("Input data failed to be entered" . $conn->error()); 
     } 
     $conn->close(); 
} elseif(isset($_POST['update'])) { 

     $update = "update ins set Name='".$name."', BloodGroup='".$blood."' where Id='".$id."'"; 
     mysql_query($update); 
     if($conn->query($update) === TRUE) { 
     echo ("Data updated successfully"); 
     } else { 
     echo ("Data cant be updated" . $conn->error()); 
     } 
     $conn->close(); 
} elseif(isset($_POST['delete'])) { 
     $id = $_POST['Id']; 
     $delete = "delete from ins where Id='".$id."'"; 
     if($conn->query($delete) === TRUE) { 
     echo ("Data deleted successfully"); 
     } else { 
     echo ("Data cant be updated" . $conn->error()); 
     } 
     $conn->close(); 
} 
else { 
$id = $_POST['Id']; 
$retrieve = "SELECT * FROM ins WHERE Id = ".'$id'.""; 
$dis = $db->query($retrieve); 
$row = $dis->fetch_assoc(); 
echo 'Details are: '.$row['id']; 
} 
} 
$conn->close(); 
?> 
+0

Хотя это не то, о чем вы просите, ваш код уязвим для нескольких атак SQL-инъекций, что может и * приведет к потере данных и проблемам конфиденциальности для ваших пользователей. Пожалуйста, найдите некоторую информацию по этой теме и не ставьте этот код в производство так! –

+0

Да, хорошо. Благодарю. Во всяком случае, я просто проверяю, как это работает. Это не последнее. Еще раз спасибо. –

ответ

0
$retrieve = "SELECT * FROM ins WHERE Id = ".$id." LIMIT 1"; 

Предел будет работать для вас

2

Изменить SQL выберите пункт в этом:

"SELECT * FROM ins WHERE Id = " .$id. " LIMIT 1"; 
0

В операторе SQL ($ извлечения), одиночные кавычки убивают его вы. Попробуйте одно из следующих действий:

  1. Удалить одиночные кавычки $id и сохранить остальную часть заявления того же
  2. Изменения '$id' к "'{$id}'" (если вы заинтересованы в получении одиночных кавычек вокруг значения $id - только в случае, если $id это текстовое значение, а не число)
+0

Значение «id» - это просто число. Позвольте мне попробовать. –

+0

Я получаю эти две ошибки: –

+0

1. Примечание: неопределенная переменная: db in ...... 2. Неустранимая ошибка: вызов функции-функции члена() для не-объекта в ... –

0

Попробуйте это
$ = извлекать "SELECT * FROM инов WHERE Id =" $ ид.
$ dis = $ db-> query ($ retrieve);
$ row = $ dis-> fetch_row();

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