我第一次使用简单的项目尝试了Heroku。 我的目标是拥有一个PHP Formular,它在PostgreSQL数据库中插入一个名称。
我尝试过其他教程,但仍然无法正常使用。
这是index.php
<form id="guestbook-form" action="" method="post">
Name:<br>
<input type="name" size="40" maxlength="250" name="name"><br><br>
<input id="submit" type="submit" value="Send">
</form>
这是我在index.php
<?php
if(isset($_POST['name'])) {
$name = $_POST["name"];
$sql = 'INSERT INTO users (name) VALUES (?)';
$sql->bind_param("s", $name);
$stmt = $pdo->prepare($sql);
$stmt->execute();
// $rowCount = $stmt->rowCount();
// $details = $stmt->fetch();
try {
$stmt->execute();
} catch (PDOException $e) {
$e->getMessage();
}
}
?>
所有数据库变量(如dbname,user,password ...)都在单独的db.php
文件中定义:
<?php
$host = "secret";
$user = "secret";
$password = "secret";
$dbname = "secret";
$port = "secret";
try{
//Set DSN data source name
$dsn = "pgsql:host=" . $host . ";port=" . $port .";dbname=" . $dbname .";user=" . $user . ";password=" . $password . ";";
//create a pdo instance
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
在cmd提示符下我创建了2个Database isnerts,页面上只显示了1个,当我尝试创建一个新的Insert时,该站点崩溃了。
有人知道解决方案吗?
编辑:我做到了! 有几个错误...... <form id="guestbook-form" action ="<?php echo ROOT_URL; ?>" method="get">
$stmt = $pdo->prepare("INSERT INTO users (name)VALUES (:name)");
$stmt->bindParam(':name', $name);
$name = $_GET["name"];
现在有效!