2016-03-23 17 views
0

Bir sql sorgusundaki sonucu php sorgumdaki bir değişkene kaydetmeye çalışıyorum. Ama bir şey, işe yaramıyor, çünkü ben okul çocuğu hatalarını yapıyorum ve php'deki deneyimsizliğim yüzünden.SQL sorgusundaki bir değişkene bir değer nasıl alınır ve depolanır php

Bu benim kodudur:

<?php 
    if(!empty($_POST['driverNo'])){ 
     $driverNoText = $_POST['driverNo']; 
     $stmt = "SELECT registrationNo FROM cars WHERE driverNo = ?"; 
     $result = $conn->prepare($stmt); 
     $result->bind_param('s', $driverNoText); 
     $result->execute(); 
     $result->store_result(); 

     if($result->num_rows > 0){ 
      $registrationNo = $result["registrationNo"]; 
      echo $registrationNo; 
     } 
     else{ 
      $registrationNo = ""; 
     } 
    } 
    else{ 
     echo "Something went horribly wrong"; 
    } 
?> 

Sadece başka bir yerde daha sonra bu değeri kullanmak gerekir, çünkü $ registrationno içine registrationno saklamak istiyorum. biri bana hatalı değerini erişmeye çalışan benim hata

Teşekkür

cevap

0

düzeltmek yardımcı olabilir

çok şey ifade ederim. Bu bir dizi, bu değiştirmeyi deneyin değildir: Bununla

$registrationNo = $result["registrationNo"]; 

:

$registrationNo = $result[0]->registrationNo; 

Umut yardımcı olur!

+0

Hi: Eğer tüm kod tutmak istiyorsanız

, sadece bu şekilde değiştirebilir. Sorumu cevapladığın için teşekkürler, ama hala işe yaramıyor. Bu hatayı alıyorum "mysqli_stmt türü olarak nesne kullanılamıyor" –

+0

Bir sürücü için yalnızca bir kayıt numarası olduğu için, sonuç kümesi 0 veya 1 olmalıdır - yalnızca sonucu –

0

Tam olarak sorunla karşılaştığınız bir fikriniz var mı?

Hata ayıklamayı deneyebilirsiniz. Şunun gibi bir şey deneyin:

$stmt = "SELECT registrationNo FROM cars WHERE driverNo = ?"; 
$result = $conn->prepare($stmt) or die(mysqli_error($dbh)); // Where $dbh = mysqli_connect("localhost","root", "password", "database"); 
$result->bind_param('s', $driverNoText); 
$result->execute() or die(mysqli_stmt_error($result)); 
//$result->store_result(); 
/* I'd prefer you to use bind result instead */ 
$result->bind_result($registrationNo); 
echo $registrationNo; // This must show the registration no. 

Bu yardımcı olur umarım.

Peace! Şimdi bunu yapıyoruz yolu, $ sonuç, tablodan veri tüm satırı tutan bir dizidir

<?php 
// your codes ... 

$result->bind_param('s', $driverNoText); 
$result->execute(); 
$result->bind_result($col); 

if($result->num_rows > 0){ 
     while ($result->fetch()){ 
      $registrationNo = $col; 
      echo $registrationNo."<br/>"; 
     } 
} else{ 
     $registrationNo = ''; 
     echo $registrationNo."<br/>"; 
} 

// your code ... 

?> 
+0

üzerinde sıkışmış bir değişkene atama Bu işe yaramıyor –

+0

Herhangi bir hata veriyor mu? –

0

bu deneyin tam bir satırın yerine tek değer döndürmek için, sadece bu kullanabilirsiniz:

$sql = "SELECT registrationNo FROM cars WHERE driverNo = " . $_POST['driverNo']; 
$registrationNo = $conn->query($sql)->fetch_row()[0]; 

Temelde, bu dizi fetch_row() içine sorgudan döndürülen döker ve [0] o dizideki sadece ilk öğesini erişiyor. SQL'inizde yalnızca tek bir alan belirlediğiniz için, bu dizideki ilk değer istediğiniz veri olmalıdır. Orada

$registrationNo = $result->fetch_row()[0]; 
+0

hala çalışmıyor –

+0

@BenjMikesozery Ne tür hatalar alıyorsunuz? '$ _POST ['driverNo']' gerçekten bir değer kazanıyor mu? Ya da belki de getirilmiş veri yok/var mı? – rhavendc

0

(getirilirken dizisi için), ancak çalışıyoruz tarihi: xD

İlgili konular