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

2つのデータベース接続を開いています。コードを次のように変更します

$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()vsを使用する必要があると思います。query()変数を変数に渡すことを計画している場合は、 prepare$sqlについても読む必要があります。

于 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 に答える