【问题标题】:Can't connect to mySQL server using PDO [closed]无法使用 PDO 连接到 mySQL 服务器 [关闭]
【发布时间】:2013-02-14 05:26:35
【问题描述】:

我是 mySQL 的新手,我使用的代码显然已经过时了,所以我切换到了 PDO。我试图尽可能准确地将我的编码从旧样式转移到 PDO,但现在我无法连接,我确定我只是在做一些愚蠢的事情来搞砸它。

这是我的旧代码:

//insert.php
mysql_connect("localhost","root","root");//database connection
mysql_select_db("Menu_Items");

$name = $_POST['food'];
$order = "INSERT INTO foods
            (name)
            VALUES
            ('$name')";
//inserting data order
//declare in the order variable
$result = mysql_query($order);
if($result){
    echo("<br>Input data is succeed");
}else{
    echo("<br>Input data is fail");
}

这是我的新 PDO 代码,它不起作用:

$dbc    = "mysql:host=localhost;dbname=Menu_Items";
$user   = "root";
$pass   = "root";

$pdo    = new pdo($dbc, $user, $pass);
$name   = $_POST['food'];
$insert     = "INSERT INTO foods (name) VALUES ('$name')";

$result = pdo -> query($insert);
if($result){
    echo("<br>Input data is succeed");
}else{
    echo("<br>Input data is fail");
}

问题出在哪里?谢谢。

【问题讨论】:

  • 乍一看,pdo -&gt; query($insert); 应该是$pdo-&gt;query($insert);
  • @Rikesh 做到了,谢谢!
  • @Rikesh 可能应该将其发布为答案...

标签: php mysql pdo mysql-connect


【解决方案1】:

正如我在评论中提到的,

pdo -> query($insert);

应该是

$pdo->query($insert);

【讨论】:

    【解决方案2】:

    尝试一些错误处理。例如:

    <?php
    try {
        $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
        foreach($dbh->query('SELECT * from FOO') as $row) {
            print_r($row);
        }
        $dbh = null;
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
    ?>
    

    如果您遇到连接错误,至少您可以看到错误是什么。

    【讨论】:

    • 这是错误的错误处理方式。
    【解决方案3】:

    使用 PDO 的主要原因之一是它具有帮助您避免 SQL 注入的工具。所以,这个:

    $insert = "INSERT INTO foods (name) VALUES ('$name')";
    

    是一个很大的禁忌。至少确保您使用的是参数化查询:

    $insert = $pdo->prepare("INSERT INTO foods (name) VALUES (:name)");
    $insert->bindParam(":name", $name);
    $insert->execute();
    

    【讨论】:

    • 这会在我运行代码时导致服务器错误
    • @Brian Hmm - 第二行缺少$,否则它应该可以工作。
    猜你喜欢
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多