SQLite3,db->查询失败

时间:2016-05-26 19:41:31

标签: php database sqlite

我正在尝试构建一个可以与数据库一起使用的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>

1 个答案:

答案 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();