尝试使用PDO

时间:2015-08-09 23:59:33

标签: php mysql pdo

好的,所以我已经尝试了好几天了,而且我一直在阅读各种各样的教程,但我似乎错过了一些东西,因为我仍然无法得到它。我正在研究Web表单并将表单输入插入到相应的数据库中。我能够从表单中获取信息并在结果页面上回显它,所以我知道一切正常。但我似乎无法将表单输入进入我的数据库。我知道连接有效,所以我的语法肯定有问题。

PHP

//DB Configs
    $username = null;
    $password = null;

    try {
        $db = new PDO("mysql:host=localhost;dbname=Testing3", $username, $password);
        //Set the PDO error mode to exception (what does this mean?)
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        //Prepare SQL and bind parameters
        $sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Name`)
            VALUES (:name)");

        //Insert a Row
        $species = $_POST['Species'];
        $sql->execute(array(':name'=>$species));

    }
    catch (PDOException $e) {
        echo "Error: " . $e->getMessage();
    }
    $result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');
    //Query
    /*
    $input = $db->query("INSERT INTO `NFK_Species` (`Id`, `Name`) VALUES (Null, `$species`)");

    $result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');*/

    //Kill Connection
    $db = Null;
}

HTML / PHP(网页)

<h1>Inserting a New Species into Database:</h1>
    <h3>Results</h3>
    <?php
    if ($sql->execute()){
        echo "Data input was successful";
        while ($rows = $result->fetch()){
            echo $rows['Name']; echo ", ";
        }
    } else {
        echo "Data input failed."; echo mysql_error();

    }
    ?>

这只是我目前的尝试。我更喜欢我之前使用bindParam和简单execute()的尝试,所以如果我可以让它工作,我会很感激。以下示例还包含此表的Id列。这是一个自动增量列,我读过它并不需要包括在内,因此我将其排除在最近的尝试之外。这是对的吗?

过去的PHP

//Prepare SQL and bind parameters
        $sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Id`, `Name`)
            VALUES (Null, :name)");
        $sql->bindParam(':name', $species);

        //Insert a Row
        $species = $_POST['Species'];
        $sql->execute();

我一直在阅读一些教程(或试图),包括尝试破解php.net教程,但它们似乎都是为那些已经掌握了这个并且经验丰富的人编写的。发生了什么,我对这一切都很陌生。

1 个答案:

答案 0 :(得分:0)

好吧,我能够弄清楚我的问题,然后使用我的代码成功插入一行。

<强>调试:

因此上面发布的代码破坏了我的代码,这意味着我的页面无法加载。我认为这意味着某处存在语法错误,但我找不到它,也没有人找到它。此外,这意味着我的Socket socket = new Socket(somehost, someport); InputStream inStream = socket.getInputStream(); OutputStream outStream = socket.getOutputStream(); ... ... byte requestID = 1; byte sourceID = 2; byte data[] = .... Packet packet = new Packet(requestID,sourceID,data); outStream.write(packet.getData()); outStream.flush(); ... ... 无法让我知道问题是什么。如果你看看我原来的PHP示例,你会在最底层看到有一个Error Alerts只是挂出来并没有任何目的,但更重要的是,它打破了代码(愚蠢,超敏感的php码)。所以我摆脱了,然后我的错误消息开始工作。它说我无法连接到我的数据库。所以我查看了我的数据库登录语法,看起来很好,然后你会在我的第一个php示例中注意到,我设法将"}"$username设置为$password 。显然这是不正确的。所以我解决了这个问题,下次刷新页面时,我在数据库中成功输入了一行! (耶)

注意:

在我原来的php示例中,我为行插入添加了NULL列,它是自动递增的,值为Id。这工作,并插入行。然后我尝试完全抛弃它,它仍然有效。因此,下面更新的工作代码不包括物种ID。

工作代码:

NULL