2016-10-06 2 views
0

Я следую его руководству, где я хочу обновить свою базу данных, используя два php-файла.PHP-запрос на обновление MySql не работает, говорит: - Неопределенный индекс

<?php 
while($row = mysqli_fetch_array($records)) 
{ 
    echo "<tr><form action =update.php method=post>"; 
    echo "<td><input type=text name=Cname value='".$row['CustomerName']."'></td>"; 
    echo "<td><input type=number name=size min=1 value='".$row['TableSize']."'></td>"; 
    echo "<td><input type=date name=Adate value='".$row['DateA']."'></td>"; 
    echo "<td><input type=time name=Atime value='".$row['TimeA']."'></td>"; 
    echo "<td><input type=tel name=phonenumber value='".$row['PhoneNumber']."'></td>"; 
    echo "<input type=hidden name=id value='".$row['TableID']."'>"; 
    echo "<td><input type=submit>"; 
    echo"</form></tr>"; 
} 
?> 

это то, что я использую для первого файла PHP , как для update.php:

<?php 

$con = mysqli_connect('127.0.0.1','root',''); 

mysqli_select_db($con,'restaurant'); 

$sql = "UPDATE addtable SET CustomerName='$_POST[Cname]', TableSize='$_POST[size]', DateA='$_POST[Adate]',TimeA='$_POST[Atime]',PhoneNumber='$_POST[phonenumber]', WHERE TableID=$_POST[id]"; 

if(mysqli_query($con,$sql)) 
    header("refresh:1; url=AssignBooking.php"); 
else 
    echo "Not Update"; 

?> 

но $ SQL строка просто не работает, как он говорит, что

Неопределенный индекс: Cname и другие индексы.

+2

да? что это связано с phpmyadmin ?? – e4c5

+0

Это очень старый подход к отображению формы для обновления! – Akshay

+1

ваш код является вульгарным для SQL Injection. проверьте «подготовленный оператор», чтобы предотвратить «SQL Injection» –

ответ

0

В соответствии с вашим кодом укажите значение атрибутов атрибутов '.

<?php 
while($row = mysqli_fetch_array($records)) 
{ 
    echo "<tr><form action =update.php method=post>"; 
    echo "<td><input type=text name='Cname' value='".$row['CustomerName']."'></td>"; 
    echo "<td><input type=number name='size' min=1 value='".$row['TableSize']."'></td>"; 
    echo "<td><input type=date name='Adate' value='".$row['DateA']."'></td>"; 
    echo "<td><input type=time name='Atime' value='".$row['TimeA']."'></td>"; 
    echo "<td><input type=tel name='phonenumber' value='".$row['PhoneNumber']."'></td>"; 
    echo "<input type=hidden name="id" value='".$row['TableID']."'>"; 
    echo "<td><input type=submit>"; 
    echo"</form></tr>"; 
} 
?> 

Помещенные котировки соответственно

UPDATE addtable SET CustomerName='".$_POST['Cname']."',TableSize='".$_POST['size']."', DateA='".$_POST['Adate']."',TimeA='".$_POST['Atime']."',PhoneNumber='".$_POST['phonenumber']."' WHERE TableID=$_POST['id']; 
+0

Я отредактировал свой ответ –

+0

Я попробовал до значения атрибутов с помощью «но он будет иметь ошибку, говоря, что он ожидал точку с запятой – DarrenE

+0

Не используйте, как этот« значение = ». $ Row ['CustomerName']." 'Вместо из этого 'value =. $ row ['CustomerName']." ' –

1

поставить кавычки вне переменной пост:

$sql = "UPDATE addtable SET CustomerName='".$_POST['Cname']."', TableSize='".$_POST['size']."', DateA='".$_POST['Adate']."',TimeA='".$_POST['Atime']."',PhoneNumber='".$_POST['phonenumber']."', WHERE TableID=".$_POST['id']; 
+0

Это не работает. Ваши отсутствующие котировки. – Xatenev

+0

@ Xatenev долгое время возвращается к основному php mysql запросы. теперь его нормально .. – rahul

+0

не беспокоится. – Xatenev