Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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 Can';t使用PDO连接到mySQL服务器_Php_Mysql_Pdo_Mysql Connect - Fatal编程技术网

Php Can';t使用PDO连接到mySQL服务器

Php Can';t使用PDO连接到mySQL服务器,php,mysql,pdo,mysql-connect,Php,Mysql,Pdo,Mysql Connect,我是mySQL的新手,而且我使用的代码已经过时了,所以我改用PDO。我试图将我的代码尽可能准确地从旧式转换到PDO,但现在我无法连接,我确信我只是在做一些愚蠢的事情来把它搞砸 这是我的旧代码,它起作用了: //insert.php mysql_connect("localhost","root","root");//database connection mysql_select_db("Menu_Items"); $name = $_POST['food']; $order = "INSER

我是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");
}
//insert.php
mysql_connect(“localhost”、“root”、“root”)//数据库连接
mysql_选择_数据库(“菜单项”);
$name=$_POST['food'];
$order=“插入到食品中
(姓名)
价值观
(“$name”)”;
//插入数据顺序
//在order变量中声明
$result=mysql\u查询($order);
如果($结果){
回波(
输入数据成功); }否则{ 回波(
输入数据失败); }
以下是我的新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");
}
$dbc=“mysql:host=localhost;dbname=Menu\u Items”;
$user=“root”;
$pass=“root”;
$pdo=新pdo($dbc,$user,$pass);
$name=$_POST['food'];
$insert=“插入食品(名称)值(“$name”)”;
$result=pdo->query($insert);
如果($结果){
回波(
输入数据成功); }否则{ 回波(
输入数据失败); }

问题出在哪里?谢谢。

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

<?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();
}
?>


如果出现连接错误,至少可以看到错误所在。

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

<?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();
}
?>


如果出现连接错误,至少可以看到错误所在。

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

$insert = "INSERT INTO foods (name) VALUES ('$name')";
是一个大禁忌。请确保您使用的是参数化查询,至少:

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

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

$insert = "INSERT INTO foods (name) VALUES ('$name')";
是一个大禁忌。请确保您使用的是参数化查询,至少:

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

正如我在评论中提到的

pdo -> query($insert);
应该是

$pdo->query($insert);

正如我在评论中提到的

pdo -> query($insert);
应该是

$pdo->query($insert);

第一眼看到,
pdo->query($insert)应该是
$pdo->query($insert)@Rikesh成功了,谢谢@Rikesh可能应该把这作为一个答案……第一眼看,
pdo->query($insert)应该是
$pdo->query($insert)@Rikesh成功了,谢谢@Rikesh可能应该将此作为答案发布…这是错误的错误处理方式。这是错误的错误处理方式。这会在我运行code@Brian嗯-第二行缺少一个
$
,但如果不是这样,它应该可以工作。这会在我运行code@Brian嗯-第二行缺少一个
$
,但是如果没有,它应该可以工作。