2015-09-04 2 views
0

Я новичок в PHP. У меня есть данные в массиве вроде:PHP MySQL - обновление данных с помощью массива

Array ([0] => Mr. ABC [1] => Ms. XYZ) 

И пытаюсь обновить 2 строки с одинаковым идентификатором в MySQL. Мои коды:

$n = count($p_title); 
for ($i = 0; $i < $n; $i++) 
{     
    $query=("UPDATE table SET p_title='$p_title[$i]' WHERE q_no='$q_no'"); 
    $result=mysqli_query($link, $query) or die(mysqli_error($link)); 
} 

При обновлении обе строки получают данные «Ms. XYZ». Где я спутать :(

+1

Конечно * оба * строки обновляются, в каждой итерации цикла вы обновляете * все * строки 'WHERE q_no = '$ q_no''. Откуда вы знаете, какую строку вы хотите иметь, какую ценность? Как «2 строки имеют [тот же самый идентификатор»? Как бы вы сказали им обособленно? –

+0

Вам нужно что-то уникальное для каждой строки (то есть уникальные идентификаторы для строк) для обновления данных до соответствующего. – Rehmat

+0

Ваша база данных shema pls. Что такое первичный ключ? и даже не думайте, что у вас его нет! – inetphantom

ответ

0

Если вы не можете differenciate строки по идентификатору, вы могли бы дать этому попытку

WHERE q_no='$q_no' LIMIT 1,$i 

Предела состоит из:.

  • числа строк осуществленного
  • число строки запроса должно начинаться на

это не чистое решение ... это могло бы работать мысль

http://www.w3schools.com/php/php_mysql_select_limit.asp

+0

Это * может * работать, но без 'ORDER BY', нет гарантии, что строки находятся в том порядке, в котором вы ожидаете. –

+0

@Michael Bausano: 'q_no = '$ q_no' LIMIT 1, $ i' дает ошибку синтаксиса SQL. :( – Vikram

+0

@Vikram О, тогда вам нужно «LIMIT 1», $ i. «Поместить переменную в строку. @RocketHazmat да, это правда, это нехорошее решение, и, если возможно, должен быть уникальный идентификатор в но я попытался принести решение, которое будет работать с заданными параметрами, оно может быть использовано как другая точка зрения на проблему, и даже если это не «чистое», это _might_ работает как решение. –

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