私は小さな電子商取引のWebサイトを構築していますが、レビューを表示したいので、人のためのスクリーン名を作成したい(名字の最初の文字を姓に連結)しかし、私はクライアントのテーブルから情報を取得する方法を把握することはできません。私はあなたに私がこれまで行ってきたコードをお見せしましょう:あなたが見ることができるように
IDに基づいて別のテーブルからデータを取得
$invId = filter_input(INPUT_GET, 'invId', FILTER_SANITIZE_NUMBER_INT); // this is taken from a name value pair from the view
// Gets the raw data from the database
function getProRev($invId){
$db = acmeConnect();
$sql = "SELECT * FROM reviews WHERE invId = :invId ORDER BY reviewId DESC";
$stmt = $db->prepare($sql);
$stmt->bindValue(':invId', $invId, PDO::PARAM_STR);
$stmt->execute();
$tn = $stmt->fetchAll();
$stmt->closeCursor();
return $tn;
}
// Builds the simple review display
function buildReviewDisplay($reviews){
$rd = "<div id='reviewView'>";
foreach ($reviews as $review){
$rd .= "<h2>$review[clientId]</h2>";
$rd .= "<h3>$review[reviewDate]</h3>";
$rd .= "<p>$review[reviewText]</p>";
$rd .= "<hr>";
}
$rd .= "</div>";
return $rd;
}
を、私は私が望むものではない、と私は「どこ今これがあるのclientId(番号)を表示しています私は立ち往生した。私は2つのテーブル(クライアントとレビュー)の関係を設定していますが、データを取得する方法を理解することはできません。ここで私が書くしようとした機能ですが、それはうまくいきませんでした:
// Trying to get the dang client info
function getUsername($clientId){
$db = acmeConnect();
$sql = "SELECT * FROM clients WHERE clientId = :clientId";
$stmt = $db->prepare($sql);
$stmt->bindValue(':clientId', $clientId, PDO::PARAM_STR);
$stmt->execute();
$cd = $stmt->fetchAll();
$stmt->closeCursor();
$fletter = substr($cd['clientFirstname'], 0, 1);
$scrnam = $fletter . $cd['clientLastname'];
return $scrnam;
}
そして私は、関数に$clientId
パラメータを渡すことは何もありませんでしたので、これは動作しませんでしたことを理解しますが、中に含まれています$tn[]
配列なので、配列から$clientId
を取得し、姓と名義のデータベースを照会する方法が必要ですが、どのようにすればよいかわかりません。
「getUsername($ review ['clientId']) 'できませんか? – Barmar
@Barmar私はそれを試みましたが、PHPは関数括弧の中の[]が好きではありません –
関数の引数で配列アクセスに問題はありません。あなたは間違ったことをしたに違いありません。 – Barmar