【问题标题】:PDO to Fetch Data using prepade statement [duplicate]PDO 使用 prepade 语句获取数据 [重复]
【发布时间】:2017-11-10 15:23:07
【问题描述】:

我需要你的帮助,我看了很多视频,我一步一步地跟着他们,我无法处理这个问题

我使用注册页面中的会话标签并在用户面板中使用它 从数据库中的 userdata 表 中获取他的数据,所以这意味着每个用户注册它必须记住他被接受的新用户并在这里使用它来获取他的数据希望我说清楚问题在我的示例中我无法使用变量获取数据是 $signinup

<?php 
session_start();

$serv = '127.0.0.1';
$user = 'root';
$pass = 'root';
$dbname = 'akbase';

// db base connection
$pdo = new PDO('mysql:dbname='.$dbname.';host='.$serv.'; charset=utf8',$user,$pass);

/* i want to use the Session to fetch data from database
the value of this session tag is any new sign up user name
and by using echo it show me the value of any new user */
echo $signinup = $_SESSION["username"] ;

$password = $_SESSION["password"] ;

// here i use prepare statment
$sql = 'SELECT * FROM usersdata WHERE username = :useruser';
$statement= $pdo->prepare($sql);
$statement->execute(':useruser'=>$signinup);
$data =  $statement->fetchObject();

echo $data->username ;

?>

这是数据库表

这是错误信息

【问题讨论】:

    标签: php mysql pdo prepared-statement


    【解决方案1】:

    你应该替换这一行:

    $statement->execute(':useruser'=>$signinup);
    

    通过这个:

    $statement->execute(array(':useruser'=>$signinup));
    

    【讨论】:

    • 或者,如果使用 php 5.4+,您可以使用 $statement-&gt;execute([':useruser'=&gt;$signinup]); :)。另外,我会在您的回答中添加您实际在做什么。像“execute() 将数组作为参数”这样简单的话可以为不知道自己在看什么的人消除很多困惑,从而使您的答案变得更好。
    • 绝对@GrumpyCrouton
    • 谢谢,因为我已经很久没有处理数据库和查询了,所以我说如果我只想获取一行我不应该使用数组函数 cuz我不会循环播放,但新功能很棒
    • @AyoubChafik 由于您使用的是 PDO,我可以向您推荐我写的 PDO wrapper class。使用这个类,您可以将整个查询压缩为 1 行代码,同时不损害可读性。
    • 哦,谢谢你在准备好文档后马上试试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2019-12-16
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多