PHPのSQLite PDOデータベース

だから、私はオンラインで回答を探すことを試みてきましたが、私は答えを得ていないようです。私は http://php.net のPHPリファレンスをすべて読んできましたが、このための具体的な答え..とにかく。

私の質問は:

私は、HTMLファイルにロードされたPHPソースファイルを持っています:

<form name="input" action="register.php" method="get">
User: <input type="text" name="user"  />
Pass: <input type="text" name="pass"  />

<input type="submit" value="Submit" /> </form>

これまでのところとても良い、そうですか?ですから、私はこの.phpファイルを持っています:

<?php
    $db = new PDO('sqlite::database:');
    $a = $_GET['user'];
    $b = $_GET['pass'];

    $firstSearchF = $db->prepare('SELECT nome FROM Users WHERE name_U = _nome');
    $firstSearchF->bindParam('_nome', $a, PDO::PARAM_STR);
    $firstSearchF->execute();
$firstSearch = $firstSearchF->fetch();

    if(empty($firstSearch))
    {
        $final = $db->prepare('INSERT INTO Users (name_u,password) VALUES(nome,passW)');
    $final->bindParam('nome', $a, PDO::PARAM_STR);
    $final->bindParam('passW', $b, PDO::PARAM_STR);
    $final->execute();

    echo 'User Registered Successfully!';
}
else
{
    echo 'Sorry, but the requested user already exists in the database. Try again!';
}
?>

フォームに何かを入力してsubmitを押すと、出力は次のようになります:

"prepare('SELECT nome FROM Users WHERE name_U = _nome'); $firstSearchF->bindParam('_nome', $a, PDO::PARAM_STR); $firstSearchF->execute(); $firstSearch = $firstSearchF->fetch(); if(empty($firstSearch)) { $final = $db->prepare('INSERT INTO Users (name_u,password) VALUES(nome,passW)'); $final->bindParam('nome', $a, PDO::PARAM_STR); $final->bindParam('passW', $b, PDO::PARAM_STR); $final->execute(); echo 'User Registered Successfully!'; } else { echo 'Sorry, but the requested user already exists in the database. Try again!'; } ?>"

The only problem is that I understand that the output is what's in after the ->. But why does that happen? I just wanted to test this out, and I can't make the outputs work, as in, what's after the echos.

これを解決するには何ができますか?何か案は?手前にありがとう。 ^^

1

1 答え

まず、スクリプトの先頭に配置することで、開発のエラー報告を有効にします

ini_set('display_errまたはs', 'On');
errまたは_repまたはting(E_ALL);

次に、SQLite DSNが正しくありません。どちらかにする必要があります

sqlite:/path/to/database/file

または

sqlite::memまたはy:

See http://www.php.net/manual/en/ref.pdo-sqlite.connection.php

Your bind parameter is also incまたはrect. It should be prefixed with a colon, eg

$firstSearchF = $db->prepare('SELECT nome FROM Users WHERE name_U = :nome');
$firstSearchF->bindParam('nome', $a, PDO::PARAM_STR);

Same goes fまたは the other statements and binding.

Lastly, I don't fully believe the code you've posted in your question is the same as it appears in your environment. Could you double check and post any cまたはrections?

Also, submitting credentials via a GET fまたはm, not cool. Use POST instead. Stまたはing plain-text passwまたはds, also a no-no.


更新

Come to think of it, given what you're seeing, I doubt you're running this on a PHP enabled web server. Confirm that you have a running web server with PHP installed as a module または CGI.

2
追加された
私はあなたの "アップデート"が正しいと思います、このスクリプトはPHPとして実行されていますか? jsfiddle.net/g9Sju あまりに面白い... :)
追加された 著者 Wesley Murch,
@Nelspike:サーバーが必要です。PHPがインストールされていると、ブラウザ上の任意の場所からファイルを開き、PHPを実行することはできません(ブラウザで実行されるため、HTMLは動作します)。 WAMP または MAMP
追加された 著者 Wesley Murch,
@Nelspikeこの <�?php $ world = 'sailor'のような簡単なテストを試してみてください。エコー "Hello、$ world!"; ?>
追加された 著者 Phil,
@Nelspikeまたは私のお気に入り - Zend Server CE
追加された 著者 Phil,
まあ、私はすべてを読んだし、私も変わってきましたが、私は同じ結果を得ているようです。私がやっているのは、メモ帳++で.phpを作成し、Firefox上でフォームを使ってhtmlを実行することだけです。また、平文のパスワードは単なるテストの問題です。これはUniプロジェクトのためであり、実際には非常に単純です。私が得意ではないのは、私が出力に問題がある理由です。
追加された 著者 Nelspike,
さて、クラスで見てきたことによると、それはPHPとして実行されます。私はコードに何かエラーがないことを知っているので、私はこれを求めています。シンプルなエコーの「Hello World」のため、全く動かないのは意味がありません。完璧に走る
追加された 著者 Nelspike,
まあ、それは画面上に何も入力しません。私はそれを考えるように、奇妙な、種類。私はクラスで完璧に走っているようなものを持っていました。本当に素早く数字を掛けるスクリプトを作成しました。
追加された 著者 Nelspike,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com