doucheng5209 2013-03-04 15:17
浏览 316
已采纳

PHP:mysql数据库的条件

I'm pretty new in PHP coding, and I cannot find the error in the following code... could you help me please ?

Fatal error: Cannot use object of type PDOStatement as array in C:\wamp\www\membre\inscription_post.php on line 14 Call Stack # Time Memory Function Location 1 0.0006 682688 {main}( ) ..\inscription_post.php:0

<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$mem = $bdd -> query('SELECT * FROM membres');

while ($data = $mem -> fetch())
{
    if($mem['pseudo'] == $_POST['pseudo'])
    {
        echo "Pseudo existant";
    }
    else
    {
        $pass_hache = sha1($_POST['pass']);
        $req = $bdd->prepare('INSERT INTO membres (pseudo, pass, email, date_inscription) VALUES(?, ?, ?, CURDATE())');
        $req->execute(array($_POST['pseudo'], $pass_hache, $_POST['email']));
        header('Location: inscription.php');
        echo "Membre ajouté";
    }
}
$mem -> closeCursor();

?>

membres table structure is the following

id(=INT, primary key), 
pseudo (VARCHAR(255)), 
pass (VARCHAR(255)), 
date_inscription (date)

Thank you for your help

  • 写回答

3条回答 默认 最新

  • doudou1438 2013-03-04 15:20
    关注

    something like this

    <?php
    $dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
    $opt = array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    );
    $bdd = new PDO($dsn,'root','', $opt);
    
    $stm = $bdd->prepare('SELECT 1 FROM membres WHERE pseudo=?');
    $stm->execute(array($_POST['pseudo']));
    $row = $stm->fetch();
    if ($row) {
        echo "Pseudo existant";
    } else {
        $pass_hache = sha1($_POST['pass']);
        $sql = 'INSERT INTO membres VALUES(NULL, ?, ?, ?, CURDATE())';
        $req = $bdd->prepare($sql);
        $req->execute(array($_POST['pseudo'], $pass_hache, $_POST['email']));
        header('Location: inscription.php');
    }
    

    insert query can be wrong, depends on the table schema

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序