PDO 実行の実行に失敗しました

WBOY
リリース: 2016-06-23 13:56:40
オリジナル
1560 人が閲覧しました

セッションを mysql データベースに保存し、セッション ID をユーザー テーブルに保存しました。ユーザーテーブルのセッションIDを通じてセッションテーブル内の対応するデータを見つけたいと考えています。コードは次のとおりです

$sql = 'select update_time from admin_session,admin where admin_session.sessid = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute( 'admin_sessid' ));


ディスカッションに返信 (解決策)

エラー メッセージは何ですか?

エラーは報告されませんが、execute(array('admin_sessid')) の実行結果は false です

array('admin_sessid') ここにはありません。バインドされたパラメータは変数値ではなく、admin_sessid 文字列である必要があります

Example #3 使用一个含有插入值的数组执行一条预处理语句(占位符)<?php/*  通过传递一个插入值的数组执行一条预处理语句 */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < ? AND colour = ?');$sth->execute(array($calories, $colour));?>
ログイン後にコピー

$sql = 'select update_time from admin_session,admin where admin_session.sessid = ?';$stmt = $pdo->prepare($sql);$name = 'admin.sessid';try{	if(!$stmt->execute(array($name))) {		throw new PDOException(111);	};} catch(PDOException $e) {	echo $e->getMessage();}
ログイン後にコピー


これはまだ動作しません

execute(array('admin_sessid')) の実行結果は false です
これはエラーが発生したことを意味します。これは PHP のせいではないため、自動的にプロンプ​​トが表示されることはありません
errorInfo を出力できます 結果を確認してください

これで、execute(array('admin_sessid')) はエラーを報告しなくなりました
しかし、次の結果を見つけたいのですが、失敗しました
[code=php
]$sql = 'select update_time admin_session,admin から admin_session.sessid= ?';
$stmt = $pdo->prepare($sql);

$name = 'admin.sessid'
$stmt->execute($name) ));
$ress=$stmt ->fetch(PDO::FETCH_ASSOC);
[/code]

ただし、次の update_time の検索など、他のデータを検索すると、正しく返されます。 = 'select update_time from admin_session where update_time
これは元の質問に戻りますが、2 つのテーブルから 1 つのデータを見つけたいのですが、どうすればよいでしょうか?
関連する 2 つのテーブルをクエリするには!

select update_time from admin_session,admin where admin_session.sessid=admin.sessid
データは mysql にあります

$sql = 'select update_time from admin_session,admin where admin_session.sessid=?';
$stmt = $p do ->prepare($sql);
$name = 'admin.sessid';
$stmt->execute(array($name));
がバインドされているのはなぜですか値です。フィールド名ではありません
少なくとも次のように記述する必要があります
$sql = 'select update_time from admin_session,admin where admin_session.sessid=admin.sessid and admin.sessid=?'; 左のクエリも有効ですが、次のクエリが見つからないのはなぜですか?
select update_time from admin_session,admin where admin_session.sessid=admin.sessid


バインディングはフィールド名ではなく値です
少なくともそれを記述する必要があります。このように

$sql = 'select update_time from admin_session,admin where admin_session.sessid=admin .sessid and admin.sessid=?'; わかりました、ありがとう、試してみます

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート