0

MySQLデータベースにクエリを実行して、ユーザーに関する情報を取得しようとしています。前のページでフォームを送信してから、そのページに移動して、データベースやその他すべての優れた機能に接続します。クエリのSELECT関数の構文について簡単な質問があります。「フィールドの名前と連結されたフィールドの名前(間にスペースを入れたもの)が変数$userと等しいtbl_nameから選択してください。

PHPでは、引用符の前にスラッシュを付ける必要があると考えました。ただし、値を返さないようです。間違った構文を使用していますか?

$user=$mysqli->real_escape_string($_POST['user']);

$sql="SELECT * FROM tbl_name WHERE firstname.\" \".lastname='$user'";
4

2 に答える 2

1

列と列を結合するにはCONCAT()WHERE句でSQLを使用する必要があります。firstnamelastname

SELECT
    *
FROM
    tbl_name
WHERE
    CONCAT(firstname. ' ', lastname) = ?

PHPで既存のコードを使用する(コピー+貼り付け用):

$sql = "SELECT * FROM tbl_name WHERE CONCAT(firstname, ' ', lastname) = '" . $user . "'";

*また、注目に値します。MySQLを使用しているため、クエリ内の文字列に合法的に一重引用符または二重引用符、あるいはその両方を使用できます(T-SQLは文字列に一重引用符で囲まれています)。このため、PHPでクエリ全体を二重引用符で囲む場合は、二重引用符をエスケープする代わりに、SQLクエリ内で単一引用符を使用できます。これはプログラマーの好みのヒントですが、引用を逃れる頭痛の種をいつか節約できるかもしれません= P

于 2012-11-08T03:45:41.453 に答える
1

これがあなたが探しているものだと思いますか?

$sql = 'SELECT * FROM '.$tbl_name .' WHERE CONCAT(firstname," ",lastname )='.$user.' ';
于 2012-11-08T03:22:59.763 に答える