我的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);
当我提交页面时,所有字段的详细信息都会被捕获,并在数据库中进行输入,但我收到以下错误消息:
致命错误:在..第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);
在我的require("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过程,这让我很困惑。
如有任何信息,我们将不胜感激。
干杯。
检查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();
}
?>