Обновление в RedBean

Я создаю систему ввода данных. Теперь я могу добавлять данные из формы. Но обновление не работает. Вместо этого, когда я пытаюсь обновить, добавляется другая запись.

Это мой add.php.

<?php
require 'rb.php';
R::setup( 'mysql:host=localhost:3306;dbname=employee',
        'root', '' );
$emp = R::dispense( 'emp' );
$emp->emp_no=$_GET['empno'];
$emp->empname =$_GET['empname'];
$emp->fathername =$_GET['fathername']; 
$emp->sex=$_GET['sex'];
$emp->designation =$_GET['designation']; 
$emp->department =$_GET['department']; 
$emp->dob =$_GET['dob'];
$emp->dor =$_GET['dor'];
$emp->doa =$_GET['doa'];
$emp->serviceStatus =$_GET['serviceStatus']; 
$emp->address =$_GET['address'];
$emp->pymtmode =$_GET['pymtmode'];
$emp->bank_code =$_GET['bank_code'];
$emp->acc_no =$_GET['acc_no'];
$emp->scale =$_GET['scale'];
$emp->basic =$_GET['basic'];



R::store( $emp );

?>

Вот мой файл update.php. Что в этом не так.

<?php
require 'rb.php';
R::setup( 'mysql:host=localhost:3306;dbname=employee',
        'root', '' );
$emp = R::load('emp', $empno);
$emp->emp_no=$_GET['empno'];
$emp->empname =$_GET['empname'];
$emp->fathername =$_GET['fathername']; 
$emp->sex=$_GET['sex'];
$emp->designation =$_GET['designation']; 
$emp->department =$_GET['department']; 
$emp->dob =$_GET['dob'];
$emp->dor =$_GET['dor'];
$emp->doa =$_GET['doa'];
$emp->serviceStatus =$_GET['serviceStatus']; 
$emp->address =$_GET['address'];
$emp->pymtmode =$_GET['pymtmode'];
$emp->bank_code =$_GET['bank_code'];
$emp->acc_no =$_GET['acc_no'];
$emp->scale =$_GET['scale'];
$emp->basic =$_GET['basic'];



R::store( $emp );

?>

Вот ссылка на скриншот консоли mysql

http://i.stack.imgur.com/b9jcg.jpg


person Mondira Sarkar    schedule 21.07.2015    source источник
comment
больше информации было бы полезно. что за сообщение об ошибке? где обновление? пожалуйста, разместите больше кода и информации, чтобы получить квалифицированную помощь   -  person rob    schedule 21.07.2015
comment
Нет ошибки. Вместо обновления он создает несколько записей с одним и тем же empno...   -  person Mondira Sarkar    schedule 21.07.2015
comment
Выложил ссылку на скриншот консоли mysql   -  person Mondira Sarkar    schedule 21.07.2015


Ответы (3)


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

$emp = R::load('emp', $empno);

Должно быть

$emp = R::load('emp', $_GET['empno']);
person AndrewR    schedule 21.07.2015
comment
Ваш код не использовался. Он добавляет еще одну запись вместо обновления предыдущей записи. - person Mondira Sarkar; 21.07.2015
comment
Выложил ссылку на скриншот консоли mysql - person Mondira Sarkar; 21.07.2015
comment
Я посмотрел на ваш снимок экрана, и неясно, что представляет собой каждый столбец, но я вижу инкрементный int (id?), Который достигает 64. Попробуйте использовать это число для загрузки данных, если это не так. - person AndrewR; 21.07.2015

В вашем файле update.php у вас есть следующая строка: $emp = R::load('emp', $empno);

Но $empno нигде не определено в вашем файле update.php. Возьмите идентификатор записи, которую вы хотите обновить, и назначьте ее переменной следующим образом:

$empno = $_GET['empno'];

Поместите его в начало вашего файла.

person Muhammad Sumon Molla Selim    schedule 21.07.2015
comment
Я не большой эксперт в Redbean. Можете ли вы объяснить, отредактировав изменения в моем update.php - person Mondira Sarkar; 21.07.2015

Спасибо за ответы, ребята... Эндрю Р. и Мухаммед... Вот код, который работает:

 <?php
require 'rb.php';
R::setup( 'mysql:host=localhost:3306;dbname=employee',
        'root', '' );
$empno = $_GET['empno'];
$emp = R::findOne('emp','emp_no=?',[$empno]);
$emp->emp_no=$_GET['empno'];
$emp->empname =$_GET['empname'];
$emp->fathername =$_GET['fathername']; 
$emp->sex=$_GET['sex'];
$emp->designation =$_GET['designation']; 
$emp->department =$_GET['department']; 
$emp->dob =$_GET['dob'];
$emp->dor =$_GET['dor'];
$emp->doa =$_GET['doa'];
$emp->serviceStatus =$_GET['serviceStatus']; 
$emp->address =$_GET['address'];
$emp->pymtmode =$_GET['pymtmode'];
$emp->bank_code =$_GET['bank_code'];
$emp->acc_no =$_GET['acc_no'];
$emp->scale =$_GET['scale'];
$emp->basic =$_GET['basic'];



R::store( $emp );

?>

person Mondira Sarkar    schedule 21.07.2015