2015-08-26 66 views
2

我一直在試圖做一個項目,我需要上傳信息到sqlite3數據庫。爲此我使用簡單的PHP腳本。PHP到sqlite3 - 無法上傳

我成功地從PHP腳本到數據庫已經上傳信息像這樣的東西:

<?php 

    try 
    { 
    $db = new PDO('sqlite:mydatabase.db'); 

    $db->exec("INSERT INTO temps (zone,temperature) VALUES ('maia',77)"); 
    echo "Row Inserted\n"; 
    } 
    catch(PDOException $e) 
    { 
      print $e->getMessage(); 
    } 
    ?> 

現在我在努力做同樣的腳本謊言是:

<?php 

     $data = htmlspecialchars($_GET["temp1"]); 
     $file = "temps.txt"; 
     $current = file_get_contents($file); 
     $current .= $data; 
     file_put_contents($file, $current); 

try 
{ 
     $db = new PDO('sqlite:teste1.db'); 
     $db->exec('BEING;'); 
     $db->exec('INSERT INTO temps (temperature) VALUES ($temp1)'); 
     $db->exec('COMMIT;'); 
} 
catch (PDOException $e) { 
     echo 'Connection failed: ' . $e->getMessage(); 
} 
?> 

我表「temps」有這樣的模式:

CREATE TABLE temps (temperature NUMERIC); 

是因爲var類型在t他是PHP,因爲我把它聲明爲數據庫中的數字?如果是這樣,我該如何解決?

欣賞您的所有想法。

謝謝

+0

'$ DB-> EXEC( '是;');'也許應該是'$分貝 - > exec('BEGIN;');'也是'$ db-> exec('INSERT INTO temps(temperature)VALUES($ temp1)');'應該是'$ db-> exec(「INSERT INTO temps(temperature )VALUES($ temp1)「);'。使用單引號是一個文字(所以你不能在裏面使用變量)。 你收到了什麼錯誤? – honerlawd

+0

沒有錯誤。我現在要改變它 –

+0

確保你還添加了編輯我只是做 – honerlawd

回答

1

您可能會感興趣的prepapred statements和(名爲|位置)參數:

<?php 
$temp1 = '1234'; 
try 
{ 
    $db = new PDO('sqlite::memory:'); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->exec('CREATE TABLE temps (temperature NUMERIC)'); 

    $stmt = $db->prepare('INSERT INTO temps (temperature) VALUES (?)'); 
    $stmt->execute(array($temp1)); 
} 
catch (PDOException $e) { 
    echo $e->getMessage(); 
} 
+0

非常感謝您的回答,但我認爲我不明白您的意思。 你爲什麼要重新創建表格? –

+0

對不起,這是一個獨立的示例(即,您可以複製並粘貼腳本並在沒有其他任何操作的情況下運行腳本)。數據庫只保存在內存中('sqlite :: memory:'),因此每次都必須創建表。 – VolkerK

+0

我明白。不知道我能做到這一點(但有很多事情我不知道)。但它不能解決我的問題。 讓我向您展示大圖: 這是一個項目的一部分,我使用arduino從一些管道測量溫度,通過wifi shield將它們發送到PHP腳本並將信息存儲在數據庫中。 –