2015-06-21 2 views
1

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

while($row = mysqli_fetch_assoc($result)) { 
    echo "<tr>"; 
    echo "<td>" . $row['Menu_id']. " </td>"; 
    echo "<td>" . $row['Menu_type']. " </td>"; 
    echo "<td>" ."<input type =text name=Price value =" .$row['Price']. " </td>";       
    echo "<td>" ."<input type=submit name=Update value=Update"." </td>"; 
    echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. " </td>"; 

    echo "</tr>"; 
} 

echo "</table>"; 

} 


if(isset($_POST['Update'])){ 

    $sqlAdd = "UPDATE Menu SET Price ='$_POST[Price]' WHERE Menu_id ='$_POST[hidden]'"; 
    $result = mysqli_query($con, $sqlAdd); 

    if(mysqli_query($con, $sqlAdd)){ 
    echo '<p><strong><font color = "red">The price for Menu id '.$Menu_id.' is updated.</strong></font>'; 
    //redirect page 
    header('Refresh :5 ; url = UpdateMenuPrice.php'); 

    } 
    else { 
    echo "failed <br>"; 
    } 

Цена не обновляется.

+0

Действительно ли это пример минимального кода? звучит для меня так, как будто вы можете ограничить его двумя строками, выполняющими SQL-запрос (если вы уверены, что эти две строки выполняются, что вы можете проверить, добавив некоторый выводный оператор спереди и после них) – hoijui

+0

Некоторые общие замечания здесь: ' $ _POST [Price] '_probably_ должен быть' $ _POST ['Price'] 'или даже' $ _POST ['price'] ', если вы не определили константу' Post', то же самое для '$ _POST [hidden]'. Затем вам обязательно стоит начать читать об опасности «sql injection» и о том, как использовать «подготовленные заявления», чтобы предотвратить эту опасность, с которой вы сталкиваетесь с этим кодом. – arkascha

ответ

0

Вы забываете закрыть скобки, а также ваш запрос не отформатирован должным образом.

echo "<td>" ."<input type =text name=Price value =" .$row['Price']. "></td>";       
        echo "<td>" ."<input type=submit name=Update value=Update >"." </td>"; 
        echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. "> </td>"; 

Вы должны использовать одиночную кавычку при работе с $ _REQUEST, $ _POST, $ _GET.
Вот ваш запрос.

$sqlAdd = "UPDATE Menu SET Price ='".$_POST['Price']."' WHERE Menu_id ='".$_POST['hidden']."'"; 

+0

Я чувствую, что не могу получить значение входящей цены. Что-то не так с кодом? –

+0

какой метод вы используете в форме означает ** сообщение ** или ** получить **. Я думаю, что это может быть проблемой здесь. И что в ** $ Menu_id **, я имею в виду, что вы присвоили любое значение ** $ Menu_id ** или нет ??? –

+0

Я использую

0

Вы забыли закрыть угловую скобу на каждом из ваших входных элементов.

Вы также должны иметь кавычки вокруг своих значений формы HTML. Вы можете использовать двойные кавычки с обратной косой чертой, одиночные кавычки, или использовать синтаксис Heredoc, как здесь:

while($row = mysqli_fetch_assoc($result)) { 
    echo <<<HTML 
    <tr> 
     <td>{$row['Menu_id']}</td> 
     <td>{$row['Menu_type']}</td> 
     <td><input type="text" name="Price" value="{$row['Price']}"></td> 
     <td><input type="submit" name="Update" value="Update"></td> 
     <td><input type="hidden" name="hidden" value="{$row['Menu_id']}"></td> 
    </tr> 
HTML; 
} 

echo "</table>"; 

Ваши $ _POST переменные в разделе обновления не следует заключать в кавычки, но должны иметь одиночные кавычки в квадратные скобки (аналогично тому, как показывает массив строк $ row).

Наконец, с вашим кодом очень легко для кого-то взломать вашу базу данных, чтобы прочитать все ваши данные базы данных, удалить ее или изменить. Вам нужно предотвратить SQL-инъекцию, используя подготовленные операторы.

+0

Если я закрою каждый столбец, будет что-то вроде меню> –

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