Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用pdo将表单值插入mysql数据库_Php_Mysql_Pdo - Fatal编程技术网

Php 使用pdo将表单值插入mysql数据库

Php 使用pdo将表单值插入mysql数据库,php,mysql,pdo,Php,Mysql,Pdo,嗨,我把我的mysql查询改成了pdo。现在的问题是我没有任何pdo的经验。我按自己的想法编辑了它,但没有任何效果。没有显示错误。有人能找到错误吗?谢谢你的阅读 <?php session_start(); if(isset($_POST["submit"])){ $hostname='localhost'; $username='root'; $password=''; function generateRandomString(

嗨,我把我的mysql查询改成了pdo。现在的问题是我没有任何pdo的经验。我按自己的想法编辑了它,但没有任何效果。没有显示错误。有人能找到错误吗?谢谢你的阅读

    <?php
     session_start();

    if(isset($_POST["submit"])){

    $hostname='localhost';
    $username='root';
    $password='';


function generateRandomString($length = 8) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
$randomString = generateRandomString();


         if ($_POST['password'] != $_POST['password_again']) {
            $message['error'] = 'Die eingegebenen Passwörter stimmen nicht überein.';
        } else {
            unset($_POST['password_again']);
            $salt = ''; 
            for ($i = 0; $i < 22; $i++) { 
                $salt .= substr('./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', mt_rand(0, 63), 1); 
            }
            $_POST['password'] = crypt(
                $_POST['password'],
                '$2a$10$' . $salt
            );

            try {
            $dbh = new PDO("mysql:host=$hostname;dbname=loginsystem",$username,$password);

            $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
            $sql = "INSERT INTO user2 (username, password, email, firstname, lastname, phone, town, street, zip, country, code)
            VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."','".$_POST["firstname"]."','".$_POST["lastname"]."','".$_POST["phone"]."','".$_POST["town"]."','".$_POST["street"]."','".$_POST["zip"]."','".$_POST["country"]."','".$_POST[$randomString]."')";
            if ($dbh->query($sql)) {
            echo "New Record Inserted Successfully";
            }
            else{
            echo "Data not successfully Inserted.";
            }

            $dbh = null;
            }
        catch(PDOException $e)
                    {
            echo $e->getMessage();
            }

            $new = rowCount();
            if ($new == 1) {
                $message['success'] = 'Neuer Benutzer (' . htmlspecialchars($_POST['f']['username']) . ') wurde angelegt, <a href="login.php">weiter zur Anmeldung</a>.';
                header('Location: http://' . $_SERVER['HTTP_HOST'] . '//activation.php');

                // $empfaenger = $_POST['f']['email'];
                // $betreff = "Registration";
                // $from = "From: Webmaster <webmaster@somediashout.de>";
                // $text = "Thank you for your registration. Your code is : " + $randomString;

                // mail($empfaenger, $betreff, $text, $from);



                    $_SESSION = array(
                        'login' => true,
                        'user'  => array(
                            'username'  => $row['username']
                        )
                    );

            } else {

            }

        }
    } 
?>

试试这个,而不是
$dbh->query()

布拉布斯85

我将代码
$new=rowCount()
替换为
$new=$dbh->rowCount()
。还要剪切此代码并粘贴到
$dbh=null
行之前,我必须用0初始化$new,所以在
try{}
语句之前编写它

请使用下面的代码,让我知道你看到了什么

<?php
session_start();
// Report all errors
error_reporting(E_ALL);

if(isset($_POST["submit"])){

        $hostname='localhost';
        $username='root';
        $password='';


        function generateRandomString($length = 8) {
                $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                $charactersLength = strlen($characters);
                $randomString = '';
                for ($i = 0; $i < $length; $i++) {
                        $randomString .= $characters[rand(0, $charactersLength - 1)];
                }
                return $randomString;
        }
        $randomString = generateRandomString();


        if ($_POST['password'] != $_POST['password_again']) {
                $message['error'] = 'Die eingegebenen Passwörter stimmen nicht überein.';
        } 
        else {
                unset($_POST['password_again']);
                $salt = ''; 
                for ($i = 0; $i < 22; $i++) { 
                        $salt .= substr('./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', mt_rand(0, 63), 1); 
                }
                $_POST['password'] = crypt(
                                                                $_POST['password'],
                                                                '$2a$10$' . $salt
                                                                );
                $new = 0;
                try {
                        $dbh = new PDO("mysql:host=$hostname;dbname=loginsystem",$username,$password);

                        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
                        $sql = "INSERT INTO user2 (username, password, email, firstname, lastname, phone, town, street, zip, country, code)
                        VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."','".$_POST["firstname"]."','".$_POST["lastname"]."','".$_POST["phone"]."','".$_POST["town"]."','".$_POST["street"]."','".$_POST["zip"]."','".$_POST["country"]."','".$_POST[$randomString]."')";
                        if ($dbh->query($sql)) {
                                echo "New Record Inserted Successfully";
                        }
                        else{
                                echo "Data not successfully Inserted.";
                        }
                        $new = $dbh->rowCount();
                        $dbh = null;
                }
                catch(PDOException $e)
                {
                        echo $e->getMessage();
                }


                if ($new == 1) {
                        $message['success'] = 'Neuer Benutzer (' . htmlspecialchars($_POST['f']['username']) . ') wurde angelegt, <a href="login.php">weiter zur Anmeldung</a>.';
                        //header('Location: http://' . $_SERVER['HTTP_HOST'] . '//activation.php');

                        // $empfaenger = $_POST['f']['email'];
                        // $betreff = "Registration";
                        // $from = "From: Webmaster <webmaster@somediashout.de>";
                        // $text = "Thank you for your registration. Your code is : " + $randomString;

                        // mail($empfaenger, $betreff, $text, $from);



                        $_SESSION = array(
                                'login' => true,
                                'user'  => array(
                                        'username'  => $row['username']
                                 ));
                } else {

                }
        }
}

print('<pre> Message :: ');
print_r($message);
print('</pre>');

print('<pre> POST values from submitted form :: ');
print_r($_POST);
print('</pre>');

print('<pre> ACTIVE SESSION :: ');
print_r($_SESSION);
print('</pre>');

?>

一旦检查了数组格式的措辞:

  • 信息
  • 从提交的表单发布值
  • 活动会话
  • 希望您能很好地理解,并让我知道此解决方案的进一步查询

    谢谢

    brabus85

    第一个答案检查是否还有错误。请在第一个答案中替换以下代码

    此代码包含问题的总体解决方案

    
    
    如果您对此有任何疑问/担忧,请告知我


    谢谢

    深吸一口气…,好的,PDO的要点是要有一个最新的api,它允许您轻松地使用准备好的语句来避免sql注入,您没有准备任何东西,您只是连接一个可以轻松注入的字符串。检查现有的解决方案。注意:第44行的C:\xampp\htdocs\socialad\registerpdo9.php中的未定义索引:XR8KYXM成功插入新记录致命错误:第51行的C:\xampp\htdocs\socialad\registerpdo9.php中调用未定义的方法PDO::rowCount()。谢谢,变量在我的数据库中,但重定向到activation.php无效,有什么提示吗?:)非常感谢您的关注,但我得到了一个错误:解析错误:语法错误,意外的“提交”(T_字符串),在第4行的C:\xampp\htdocs\socialad\registerpdo9.php中应为“]”,如果我在第4行上做了两个“提交”,那么就会出现:解析错误:语法错误,意外的“mysql”(T_字符串)在第38行的C:\xampp\htdocs\socialad\registerpdo9.php中,它可以工作,谢谢你,伙计!!:)祝你的企业好运:)很高兴知道我们的输入工作完美无瑕。如果遇到任何进一步的问题,请随时与我们联系。:)
    <?php
    session_start();
    // Report all errors
    error_reporting(E_ALL);
    
    if(isset($_POST["submit"])){
    
            $hostname='localhost';
            $username='root';
            $password='';
    
    
            function generateRandomString($length = 8) {
                    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                    $charactersLength = strlen($characters);
                    $randomString = '';
                    for ($i = 0; $i < $length; $i++) {
                            $randomString .= $characters[rand(0, $charactersLength - 1)];
                    }
                    return $randomString;
            }
            $randomString = generateRandomString();
    
    
            if ($_POST['password'] != $_POST['password_again']) {
                    $message['error'] = 'Die eingegebenen Passwörter stimmen nicht überein.';
            } 
            else {
                    unset($_POST['password_again']);
                    $salt = ''; 
                    for ($i = 0; $i < 22; $i++) { 
                            $salt .= substr('./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', mt_rand(0, 63), 1); 
                    }
                    $_POST['password'] = crypt(
                                                                    $_POST['password'],
                                                                    '$2a$10$' . $salt
                                                                    );
                    $new = 0;
                    try {
                            $dbh = new PDO("mysql:host=$hostname;dbname=loginsystem",$username,$password);
    
                            $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
                            $sql = "INSERT INTO user2 (username, password, email, firstname, lastname, phone, town, street, zip, country, code)
                            VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."','".$_POST["firstname"]."','".$_POST["lastname"]."','".$_POST["phone"]."','".$_POST["town"]."','".$_POST["street"]."','".$_POST["zip"]."','".$_POST["country"]."','".$_POST[$randomString]."')";
                            if ($dbh->query($sql)) {
                                    echo "New Record Inserted Successfully";
                            }
                            else{
                                    echo "Data not successfully Inserted.";
                            }
                            $new = $dbh->rowCount();
                            $dbh = null;
                    }
                    catch(PDOException $e)
                    {
                            echo $e->getMessage();
                    }
    
    
                    if ($new == 1) {
                            $message['success'] = 'Neuer Benutzer (' . htmlspecialchars($_POST['f']['username']) . ') wurde angelegt, <a href="login.php">weiter zur Anmeldung</a>.';
                            //header('Location: http://' . $_SERVER['HTTP_HOST'] . '//activation.php');
    
                            // $empfaenger = $_POST['f']['email'];
                            // $betreff = "Registration";
                            // $from = "From: Webmaster <webmaster@somediashout.de>";
                            // $text = "Thank you for your registration. Your code is : " + $randomString;
    
                            // mail($empfaenger, $betreff, $text, $from);
    
    
    
                            $_SESSION = array(
                                    'login' => true,
                                    'user'  => array(
                                            'username'  => $row['username']
                                     ));
                    } else {
    
                    }
            }
    }
    
    print('<pre> Message :: ');
    print_r($message);
    print('</pre>');
    
    print('<pre> POST values from submitted form :: ');
    print_r($_POST);
    print('</pre>');
    
    print('<pre> ACTIVE SESSION :: ');
    print_r($_SESSION);
    print('</pre>');
    
    ?>
    
    <?php
    session_start();
    
    if(isset($_POST["submit"])){
    
            $hostname='localhost';
            $username='root';
            $password='';
    
    
            function generateRandomString($length = 8) {
                    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                    $charactersLength = strlen($characters);
                    $randomString = '';
                    for ($i = 0; $i < $length; $i++) {
                            $randomString .= $characters[rand(0, $charactersLength - 1)];
                    }
                    return $randomString;
            }
            $randomString = generateRandomString();
    
    
            if ($_POST['password'] != $_POST['password_again']) {
                    $message['error'] = 'Die eingegebenen Passwörter stimmen nicht überein.';
            } 
            else {
                    unset($_POST['password_again']);
                    $salt = ''; 
                    for ($i = 0; $i < 22; $i++) { 
                            $salt .= substr('./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', mt_rand(0, 63), 1); 
                    }
                    $_POST['password'] = crypt(
                                                                    $_POST['password'],
                                                                    '$2a$10$' . $salt
                                                                    );
                    $new = 0;
                    try {
                            $dbh = new PDO("mysql:host=$hostname;dbname=loginsystem",$username,$password);
    
                            $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
                            $sql = "INSERT INTO user2 (username, password, email, firstname, lastname, phone, town, street, zip, country, code)
                            VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."','".$_POST["firstname"]."','".$_POST["lastname"]."','".$_POST["phone"]."','".$_POST["town"]."','".$_POST["street"]."','".$_POST["zip"]."','".$_POST["country"]."','".$randomString."')";
    
                            if ($dbh->query($sql)) {
                                    echo "New Record Inserted Successfully";
                            }
                            else{
                                    echo "Data not successfully Inserted.";
                            }
                            $new = $dbh->lastInsertId();
                            $dbh = null;
                    }
                    catch(PDOException $e)
                    {
                            echo $e->getMessage();
                    }
    
    
                    if ($new > 0) {
                            $message['success'] = 'Neuer Benutzer (' . htmlspecialchars($_POST['f']['username']) . ') wurde angelegt, <a href="login.php">weiter zur Anmeldung</a>.';
                            header('Location: http://' . $_SERVER['HTTP_HOST'] . '//activation.php');
    
                            // $empfaenger = $_POST['f']['email'];
                            // $betreff = "Registration";
                            // $from = "From: Webmaster <webmaster@somediashout.de>";
                            // $text = "Thank you for your registration. Your code is : " + $randomString;
    
                            // mail($empfaenger, $betreff, $text, $from);
    
    
    
                            $_SESSION = array(
                                    'login' => true,
                                    'user'  => array(
                                            'username'  => $row['username']
                                     ));
                    } else {
    
                    }
            }
    }
    ?>