2016-03-23 24 views
0

SQLクエリの結果をPHPクエリの変数に格納しようとしています。しかし、事実、それは働いていない、単純に私は児童虐待のエラーを作成しているため、PHPの私の経験の不足のために。SQLクエリから変数に値を取得して格納する方法PHP

は、これは私のコードです:

<?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"; 
    } 
?> 

私はちょうど私が他の場所で、後でその値を使用する必要があるため、$ registrationNoにregistrationNoを保存したいです。誰かが私にはあなたは間違った値にアクセスしようとしている私のエラー

おかげ

答えて

0

を修正するのに役立つことができれば

は多くのことを意味します。これは、配列、これを交換してみていない。これで

$registrationNo = $result["registrationNo"]; 

を:

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

期待しては役立ちます!

+0

こんにちは:あなたのコードのすべてを維持したい場合は

は、あなたはそれをこのように変更することができます。私の質問にお答えいただきありがとうございますが、それでも動作しません。このエラーが発生しました。「配列としてmysqli_stmt型のオブジェクトを使用できません」 –

+0

ドライバの登録番号が1つしかないので、結果セットは0または1のいずれかでなければなりません - その結果を変数 –

0

問題に直面しているのはどこですか?

デバッグを試すことができます。

$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. 

これが役に立ちますようお願いいたします。

平和! xDさん

+0

これはどちらでも動作しません –

+0

エラーが発生しますか? –

0

これを試してみてください:(配列フェッチのために)

<?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

まだ動作しません –

+0

@BenjMikesozeryどのようなエラーが表示されますか? '$ _POST ['driverNo']'は本当に値を取得しますか?あるいは、取り込まれたデータがまったく存在しないかもしれませんか? – rhavendc

0

をあなたは今それをやっている方法で、$結果は、あなたのテーブルからのデータの行全体を保持する配列ですが、あなたがしようとしているので、完全な行の代わりに単一の値を返すために、あなたはこれを使用することができます。

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

基本的に、これは、配列がfetch_row()にクエリから返さダンプ、および[0]は、その配列のちょうど最初の要素にアクセスしています。あなたのSQLには1つのフィールドしか指定されていないので、その配列の最初の値は必要なデータでなければなりません。そこ

$registrationNo = $result->fetch_row()[0]; 
関連する問題