2014-11-07 2 views
-1

У меня есть вопрос, о котором я думаю в течение некоторого времени.Данные обновления PHP для MYSQL для каждой строки

У меня есть таблица, как это показано с помощью кода PHP в браузере

username | price | description | 

a  | aaa  | pending | [yes] [no] 
b  | bbb  | yes  | [yes] [no] 
a  | ccc  | no  | [yes] [no] 

только имя пользователя, цена и описание взяты из базы данных MySQL.

для [да] и [нет] - это сообщение кнопки для запроса этого. продукты - мое имя таблицы

[yes] = UPDATE products SET description='YES' WHERE description='PENDING' 
[no] = UPDATE products SET description='NO' WHERE description='PENDING' 

Что я могу сделать с моим запросом? Я хочу, чтобы кнопка «Да» и «Нет» обновляла только одну строку, Могу ли я использовать GROUP BY? Запрос, который я использовал, абсолютно неверен, поскольку он меняет все ожидания на да, когда у меня есть несколько ожидающих.

+1

у вас есть столбец с именем [ 'update'] (http://dev.mysql.com/doc/refman/5.5 /en/reserved-words.html)? Надеюсь, вы используете тики '' 'вокруг этого где-нибудь в своем запросе, который вы не показываете. –

+1

'AND title = '? – msfoster

+0

Я бы не использовал какой-либо столбец, кроме id, чтобы выбрать запись, я не знаю о ваших конкретных потребностях, но названия обычно не уникальны. – vcanales

ответ

0

Когда вы получаете данные, сохраните идентификатор каждого объекта в атрибуте HTML «id». Вы можете сделать это, установив его на что-то вроде id = "row-id".

Затем, когда вы обновляете, вы просто используете php для захвата идентификатора, и вы можете добавить его в свой запрос.

"UPDATE products SET description='YES' WHERE id=:id" 
+0

* "' WHERE id =: id' "* - Предполагая, что OP использует PDO, который неизвестен. –

+2

Мы заставим его использовать его, если нет! – vcanales

-1

.Так что заявление не является уникальным.

Попробуйте захватить идентификатор текущей строки, которую вы хотите обновить.

<a href="?update=YES&id=ROW_ID">Yes</a> 
<a href="?update=NO&id=ROW_ID">No</a> 

И тогда в вашем SQL запросе у вас есть что-то вроде этого

"UPDATE products SET description='" . $_GET['update'] . "' WHERE id='" . $_GET['id'] . "'" 
+0

Вы из фона JS, правильно? Эти '+' должны быть точками '. '. ''" + $ _GET [' update '] + "' WHERE id = '" + $ _GET [' id '] + "'' to ''". $ _GET [' update ']. "' WHERE id = ' «$ _GET ['id']." '' –

+0

Кроме того, у вас довольно большое [SQL Injection hole] (http://bobby-tables.com/) – Machavity

+0

Я просто хочу дать ему основы. Но это правда, ему нужно сделать некоторую проверку перед отправкой этих значений в базу данных. – lindesvard

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