2017-02-21 14 views
0

こんにちは私はこのコードは動作しません。私は約1時間それを悩まされていて、何かエラーを見つけることができないようだ、私はそれが何であるかわからない。誰かが私をここで助けてくれるかもしれない。スクリプトの挿入PDOステートメントがデータベースに挿入されていません

<?php error_reporting(E_ALL); ini_set('display_errors',1); 
require('connect.php'); 

$sql = "INSERT INTO products (name, description, price, url, category, artwork) VALUES ('john', 'john', 'john', 'john', 'john', 'john')"; 
if ($link->query($sql)) { 
    echo "<script> 
    alert('Data was added.'); 
    window.location.href='dashboard.php'; 
    </script>"; 
} 
else { 
    echo "<script> 
    alert('Data was not added.'); 
    window.location.href='dashboard.php'; 
    </script>"; 
} 
?> 

を私は自分のデータベースにデータを追加しようとしていますが、それはちょうど私がそれを与えたデータを追加しません。ここで

私の接続スクリプトです:

<?php 

try { 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $link = new PDO("mysql:host=$dbhost;dbname=dbtesttest;",$dbuser,$dbpass); 

} catch (PDOException $e) { 
    echo "Failed :" . $e->getMessage() . "\n"; 
} 

?> 

誰もが私が間違っているの何の手がかりを得ましたか。 PHPでアラートを使う以外にも、 それは私にエラーを与えない、私は実際の属性で作られたデータベースがあります。私は助けを必要:(

+1

クエリが機能していることを確認しましたか?最初に頭に浮かぶのは数値フィールドに文字列を入れることです(価格 - > 'ジョン') – nvisser

+0

準備済みの文を使用して準備をしてからクエリを実行してみてください。 More here http://php.net/manual/en/pdo.prepared-statements.php – Grynets

+0

「うまくいかない」とはどういう意味ですか? if/then/elseステートメントがあります。コードブランチのどれが実行されていますか? – miken32

答えて

-1

私はあなたが$リンク - >のexec($ sqlを)を使用すべきだと思う。

+0

あなたはそれをどう思いますか?過ぎ去ったコメント以上の何かをバックアップするものは何もない。 – miken32

-1

のは、問題を単純化してみましょうあなたは、データベース接続を戻ってきているようですが、見ていないあなたようにするため。よりよく理解することができ、我々は同じスクリプトからDBを呼び出すことができます(私たちはすべてのリファクタリングが大好きので、あなたはそれが働いて取得した後、我々はそれを移動することができない私たち?)

try { 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $link = new PDO("mysql:host=$dbhost;dbname=dbtesttest;",$dbuser,$dbpass); 

//属性セットの接続にtryブロック

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


} catch (PDOException $e) { 
    echo "Failed :" . $e->getMessage() . "\n"; 
} 

その後、上記

$link->query($sql) 

$stmt = $link->prepare($sql); 
$stmt->execute(); 

にすべてが今のあなたのtryブロックに行くべきとインサートが動作するはずですか、より詳細なエラーが返されます。この行を変更します。うまくいけば、それはあなたに行くと、あなたの頭を包むのを手伝ってくれるでしょう。この linkにはphp/mysql CRUD操作に関する良い入門書があります。

+0

'$ link-> query'を直接呼び出すと何が問題になりますか?なぜ声明を作成することが助けになると思いますか? – miken32

+0

私はそれが間違っているとは思わないが、OPのために、それは彼が何が起こっているのかを分かりやすくし、うまくいけば操作をよく理解するのに役立つはずです。私はそれはまた、よく挿入された/更新/削除ステートメントを書くときは、クエリが頻繁に関連付けられるように選択するのが良いと信じています。この[リンク](http://stackoverflow.com/questions/16381365/difference-between-pdo-query-and-pdo-exec)では、相違点の詳細が説明されています。 –

+1

質問に答える必要があります。トラブルシューティングや「読みやすく」する必要はありません。もう少し担当者がいれば、質問にコメントしたり、デバッグの提案を提供したりすることができます。 – miken32

関連する問題