2

我正在尝试将数据插入到我服务器上的数据库中。

要连接到我的数据库,我有以下代码:

<?php
$host = "/homes/49/jc192699/public_html/dbase/";
$database = "EduPro.db";
$dbhandle = new PDO("sqlite:".$host.$database);

try {
    $dbhandle = new PDO("sqlite:".$host.$database);

} catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();
}
?> 

这一切都很好!我已将其包含在我的代码中,因此这不是问题。

这是我将数据插入数据库的代码:

<?php

$sql = "INSERT INTO USERS (`userName`, `password`) VALUES (`test, `testy`)";
  if ( $fetched = $dbhandle->query($sql)){
  $fetched->execute(PDO::FETCH_BOTH);
  echo "Success!";
  }

  else {
echo "Fail.";
}

?>

由于某种原因,它没有将数据插入数据库。我知道 SQL 语句是 100% 正确的,因为我已经在其他地方进行了测试。

谁能帮我?

4

4 回答 4

5

您正在打开两个数据库连接。将您的代码更改为

$host = "/homes/49/jc192699/public_html/dbase/";
$database = "EduPro.db";
try {
    $conn = new PDO("sqlite:".$host.$database);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

您不应该在查询中使用反引号而不是使用单引号。并且列不应该有任何引号。

try {
    $sql = "INSERT INTO USERS (userName, password) VALUES ('test', 'testy')";
    $sth = $conn->query($sql);
} catch(PDOException $e) {
    echo $e->getMessage();
}

获取您需要使用的记录

try {
    $sth = $conn->query('SELECT * FROM USERS');
    $rows = $sth->fetchAll(PDO::FETCH_ASSOC);
    //$rows contains the fetched records in an associative array
    var_dump($rows);
} catch(PDOException $e) {
    echo $e->getMessage();
}

在此处了解有关 PDO 的更多信息http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

于 2012-05-03T03:08:09.707 回答
1

你为什么要反击价值观?试试单引号:

$sql = "INSERT INTO USERS (userName, password) VALUES ('test', 'testy')";

另外,检查您的 PHP 错误日志,它可能会给您一些见解。

根据文档,我相信您必须使用exec()vsquery()来执行非选择查询,例如插入、更新和删除。如果您打算将变量传递给$sql变量,您还应该阅读prepare

于 2012-05-03T03:01:38.113 回答
1

以下是一些要遵循的语法规则:

SQL 查询必须在 PHP 中引用 SQL 查询中的字符串值必须被引用 数值不能被引用 NULL 不能被引用

 If(isset($_POST['submit'])) {

$stmt = $db->prepare("INSERT INTO usersdata (Firstname, Lastname, 
Email,Passward)
VALUES (:name, :lstname, :email,:pass)");

// inserting a record

然后将值与您的变量绑定它将起作用

于 2017-06-12T01:12:02.483 回答
0

为了更安全地将数据库数据插入数据库,我相信您的代码应该看起来更像这样。

// First make your Database connections like so.
$host = "/homes/49/jc192699/public_html/dbase/";
$database = "EduPro.db";
try {
    $conn = new PDO("sqlite:".$host.$database);
} catch (PDOException $e) {
    echo 'Connection error: ' . $e->getMessage();
}

//then next we make the data insertion using a prepared statement.
// Try to insert the data to the database

try {
    $username = "test";
    $password = "testy";

    $sql = "INSERT INTO USERS (userName, password) VALUES ('test', 'testy')";
    $sth = $conn->query($sql);

    $stmt = $db->prepare("INSERT INTO usersdata (userName, password) VALUES (:uname, :pass)");
    $stmt->bindParam(':uname', $username);
    $stmt->bindParam(':pass', $password);
    $stmt->execute();

    echo "Data inserted "; //Just get a success message

} catch(PDOException $e) {
    echo $e->getMessage();
}
于 2020-10-24T02:16:32.250 回答