2016-08-15 12 views
1

私はプログラミングで、特にphpとMySQLで新しいです。私は宿題のためのダイナミックなウェブサイトを作らなければならない。私の問題は以下の機能にあります。与えられたタグ名(文字列)でタグのint値を返すようにします。しかし私の場合、関数は毎回 '1'を返します。誰も私がこの問題を解決するのを助けることができます、ありがとう。PHP関数の戻り値の問題

public function getTagIdByName(string $tagName) : int 
 
    { 
 
     $statement = self::$db->prepare("SELECT tags.id FROM tags WHERE tags.name = ? "); 
 
     $statement->bind_param("s", $tagName); 
 
     $result = $statement->execute(); 
 
     return $result; 
 
    }

+0

'mysqli'プリペアドステートメントを使うと、フェッチする前に変数に' bind_result'をする必要があります。例[here](http://php.net/manual/en/mysqli-stmt.fetch.php)を参照してください。 –

答えて

1

問題は、あなたが​​の結果を返しているということですが、その機能は、実際にあなたのクエリの結果を与えるものではありません。実行が成功したことを確認した後、結果を取得する必要があります。

//don't forget to error-check before using query results 
$statement->execute() or die($statement->error); 
$result = $statement->get_result(); //retrieve results for processing 

if(!$result->num_rows) return null;//if the id was not found in the DB  
else return $result->fetch_assoc()['id']; 
+1

彼は 'PDO'ではなく' mysqli'を使っています。 – Barmar

+0

あなたの答えを修正したら、私はダウンボートを削除します。 – Barmar

+0

@Barmar変更を加えました。 mysqliがOPによって使用されたことをどう知ったのですか? – BeetleJuice

1

あなたは

$data = $result->fetch_assoc(); 
return $data['id']; // you can change with which you want to return with field name 

そして、どちらかあなたが返された値を使用することができますで簡単に実現できます。