PHP MySQL在非对象上调用成员函数setAttribute(),只是不要得到它

时间:2014-11-10 11:21:39

标签: php mysql pdo

我的php页面有点问题我不明白。

我有一个connect.php文件,我使用 require(“connect.php”)将其包含在我的php页面顶部。

使用以下代码,我可以在表单中填充下拉菜单而不会出现任何问题。

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM mytable"); 
$stmt->execute();
$rowsec = $stmt->fetchALL(PDO::FETCH_NUM);

当我提交页面时,会捕获所有字段详细信息并在数据库中创建一个条目但是我收到以下错误消息:

致命错误:在.line 71中的非对象上调用成员函数setAttribute()

第71行是 $ conn-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);

现在我发现如果我添加以下行,它可以正常工作:

$conn = new PDO("mysql:host=$servername;dbname=mydatabase", "user", "pass"); //This line here
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM mytable"); 
$stmt->execute();
$rowsec = $stmt->fetchALL(PDO::FETCH_NUM);

在我的要求(“connect.php”)中,我有:

<?php
$servername = "localhost";
$username = "user";
$password = "pass";

try {
    $conn = new PDO("mysql:host=$servername;dbname=clincoding", $username, $password);
    echo "Connected successfully"; 
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

要从我使用的下拉菜单的表格中获取数据:

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM mytable"); 
$stmt->execute();
$rowsec = $stmt->fetchALL(PDO::FETCH_NUM);

我使用的下拉菜单:

<label for="dropmen">Select a section</label><br />
                <select name="dropmen" id="dropmen">
                    <?php foreach ($rowsec as $value) { ?>
                  <option value="<?php  echo $value[1] ?>"><?php  echo $value[2] ?></option>
                    <?php } ?>
                </select>

有人可以告诉我为什么具有相同连接的 require(“connect.php”)不起作用?试图让我了解PDO流程这让我很难过。

非常感谢任何信息。

干杯。

1 个答案:

答案 0 :(得分:0)

检查connect.php的第7行

$conn = new PDO("mysql:host=$servername;dbname=clincoding", $username, $password);

并将其更改为

$conn = new PDO("mysql:host=".$servername.";dbname=clincoding", $username, $password);

从php.net上读到这个函数并将其用作

<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>