我正在尝试构建一个可以与数据库一起使用的webform(SQLite3)。我正在使用PHP。到目前为止,我有一个文件,我在其中创建数据库和它的表(mojaDB.php),一个带有html格式的文件(myForm.html)和一个带有插入和显示的文件(mojaDBINsert.php)。这两个似乎正常工作,但当我运行第三个文件时,我收到'查询失败'消息,我不知道为什么或如何检查它?我还想知道如何检查数据库和表是否已创建?
如果有人帮我解决以下问题,我将非常感激: *没有显示插入的值,而是显示die('failed') *是根本创建的数据库和表吗?
带插入和显示的代码(mojaDBINsert.php):
<?php
//open the database
$db = new PDO('sqlite:mydb.db');
$firstname = $_POST["firstname"];
//inserts row
$db->exec("INSERT INTO users(name) VALUES ('".$firstname."')");
echo "Inserted row into table users <br />";
//drop
// $db->exec('DROP TABLE users');
$tablesquery = $db->query("SELECT sql FROM users") or die('query failed');
echo $tablesquery;
$table = $tablesquery -> fetchArray(SQLITE3_ASSOC);
echo '<pre>'.$table['sql'].'</pre>';
$db->close();
?>
创建数据库和表
<?php
//opens db
#$db = new SQLite3('sqlite:mydb.db');
$db = new PDO('sqlite:mydb.db');
//creates a user table
$db->exec('CREATE TABLE users (name varchar(255))');
echo "Table users has been created <br />";
//inserts row
$db->exec('INSERT INTO users(name) VALUES ("anna")');
echo "Inserted row into table users <br />";
//drop
// $db->exec('DROP TABLE users');
?>
形式
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
</head>
<body>
<form action="mojaDBINsert.php" class="form-horizontal" method="post" name="register_form" role="form">
<h2>Registration Form</h2>
<div class="form-group">
<label class="col" for="firstname">First Name</label>
<div class="col">
<input class="form-control" id="firstname" name="firstname" placeholder="First Name" type="text">
</div>
</div>
<div class="form-group">
<div class="col">
<button type="submit">Register</button>
</div>
</div>
</div>
<script>
function myAjax() {
$.ajax({
type: "POST",
url: 'script.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
</script>
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
</form>
</body>
</html>
答案 0 :(得分:0)
更改
SELECT sql FROM users
到
SELECT name FROM users
因为sql
表格中没有users
列。
您的PHP中也存在一些问题。它应该是:
$tablesquery = $db->query("SELECT name FROM users") or die($db->errorInfo()[2]);
// echo $tablesquery; // can't echo an object
while ($row = $tablesquery->fetch(PDO::FETCH_ASSOC)) {
echo '<pre>'.$row['name'].'</pre><br>';
}
$db->close();