2012-08-13 7 views
16

Imループを使用しようとしていません。私は1つの行から1つの列の値が1つだけです。私は次のコードで欲しいものを手に入れましたが、PDOを使う方が簡単です。mysqlを使ってデータベースから1つの値を返すPHP pdo

try { 
     $conn = new PDO('mysql:host=localhost;dbname=advlou_test', 'advlou_wh', 'advlou_wh'); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
     echo 'ERROR: ' . $e->getMessage(); 
    } 

$userid = 1; 

$username = $conn->query("SELECT name FROM `login_users` WHERE username='$userid'"); 
$username2 = $username->fetch(); 
$username3 = $username2['name']; 

echo $username3; 

これは、データベースから1つの値を取得するには行が多すぎるように見えます。 :\

答えて

14

あなたは単一の値を必要とするたびに

function getSingleValue($tableName, $prop, $value, $columnName) 
{ 
    $q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'"); 
    $f = $q->fetch(); 
    $result = $f[$columnName]; 
    return $result; 
} 

をこのために関数を作成し、その関数を呼び出すことができます次に、あなたは簡単に行うことができます。

$singleValue = getSingleValue('login_users', 'username', $userid, 'name'); // will get you the value 

ですから、ちょうどその関数を作成する必要がありますただし、異なる列名を持つ異なる表に対して再利用できます。

+5

連結を使用してデータベースクエリを構築することは危険です。 PDOの準備されたステートメントを使用するほうがはるかに優れています。 – bdsl

2

あなたの車に乗り込み、店に駆けつけて、群衆の中を歩き回り、必要なミルクを掴んで、自宅に戻って戦うだけのようにあなたはミルクシェイクをすることができます。

これらのステージはすべて必要であり、後続の各ステップは実行された前のステージに依存します。

これを繰り返し実行すると、それを再利用して1つのgetMyValue()コールに減らすことができるように、すべての手段で関数をラップしますが、バックグラウンドではすべてのコードが存在する必要があります。

+0

いいえ、そうではないよ 「これらのステージの全てが必要です」。そして、あなたは店に歩いていくべきです。 ;-) – liamvictor

32

あなたはfetchColumn()を使用することができます。

$q= $conn->query("SELECT name FROM `login_users` WHERE username='$userid'"); 
$username = $q->fetchColumn(); 
関連する問題