2016-04-02 21 views
1

Şu anda yaz boyunca bir proje için PHP ve mySQL'i öğreniyorum. 4 metin alanını bir mySQL tablosuna depolayacak bir HTML formu oluşturmaya çalışıyorum. Bu kullanıyorum kodudur:Neden kodum ikiden fazla veri alanı saklamıyor?

HTML Formu

<form action="postEvent.php" method="post"> 
    Name: 
    <input type="text" name="Name" /> 
    Date: 
    <input type="text" name="Date" /> 
    Time: 
    <input type="text" name"Time" /> 
    Description: 
    <input type="text" name"Description" /> 
    <input type="submit" value="Submit"> 
</form> 

Microsoft WebMatrix ve I ile benim veritabanı oluşturmayı

// Create connection 
$link = mysqli_connect('localhost', 'root', '******', 'myDB'); 

// Check connection 
if ($link->connect_error) { 
    die("Connection failed: " . $link->connect_error); 
} 

$iName = mysqli_real_escape_string($link, $_POST['Name']); 
$iDate = mysqli_real_escape_string($link, $_POST['Date']); 
$iTime = mysqli_real_escape_string($link, $_POST['Time']); 
$iDescription = mysqli_real_escape_string($link, $_POST['Description']); 
$sql = "INSERT INTO events " 
    . "(Name,Date,Time,Description)" 
    . " VALUES ('$iName','$iDate','$iTime','$iDescription')"; 

if (mysqli_query($link, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $link->error; 
} 

$link->close(); 

PHP Eylem yerel olarak koşuyorum benim makinemden. Veritabanındaki her alan aynı veri tipini kullanır.

Sorunum, kodu çalıştırdığımda yalnızca ilk iki metin alanını depolamasıdır. Zaman ve Açıklama, tabloya boş olarak gönderilir.

+0

eklemek print_r ($ _ POST) Postevent.php burada

<form action="postEvent.php" method="post"> Name: <input type="text" name="Name" /> Date: <input type="text" name="Date" /> Time: <input type="text" name="Time" /> Description: <input type="text" name="Description" /> <input type="submit" name="submit" value="Submit"> </form> 

ve teslim düğmesini name="submit" ekleyin postEvent.php'nin en üstünde ve çıktıda çıktıyı yayınlayın. –

+0

'$ sql = "olayları (Ad, Tarih, Saat, Açıklama) DEĞERLER INSERT INTO ('$ INAME', '$ iDate', '$ iTime', '$ iDescription')";' @MawiaHL –

+0

iyidir Her iki öneriyi de ekledim, rasgele bir metin girdim ve sayfa basildiginda: _Array ([Ad] => hjjhgjh [Tarih] => kljklj) Yeni kayıt başarıyla oluşturuldu –

cevap

1

Formunuz aşağıdaki gibi olmalıdır.

if(isset($_POST['submit'])){ 
     $mysqli = new mysqli("localhost", "root", "my_password", "myDB"); 
     $name = isset($_POST['Name'])? $_POST['Name']:''; 
     $date= isset($_POST['Date'])? $_POST['Date']:''; 
     $time= isset($_POST['Time'])? $_POST['Time']:''; 
     $des= isset($_POST['Description'])? $_POST['Description']:'';  

     if(empty($name)){ 
     $error = 'Enter Name'; 
     }elseif(empty($date)){ 
     $error = 'Enter date'; 
     }elseif(empty($time)){ 
     $error ='Enter time'; 
     }elseif(empty($des)){ 
     $error = 'Enter description'; 
     }else{ 
     $query = "INSERT INTO `events` (`Name`, `Date`, `Time`, `Description`) 
        VALUES (?,?,?,?)"; 
     $stmt = $mysqli->prepare($query); 
     $stmt->bind_param("ssss", $name, $date, $time,$des); 
     $stmt->execute(); 
     $stmt->close(); 
     } 
    } 

Ve hata varsa kontrol edebilirsiniz:

if(!empty($error)){ 
    echo $error; 
} 
+0

Bu mükemmel çalışıyor, teşekkürler. –

+0

kabul etmek için lütfen onay simgesini tıklayın. –

İlgili konular