2012-05-03 145 views
2

我試圖將數據插入到我的服務器上的數據庫中。使用PDO插入數據庫

連接到我的數據庫中,我有以下代碼:

<?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%正確的,因爲我在其他地方測試過它。

任何人都可以幫助我嗎?

回答

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/

+0

我已經嘗試這樣做,我收到以下錯誤: '致命錯誤:調用一個成員函數fetchAll()在非對象上# – DommyCastles

+0

哎呀,我很抱歉,你不能在這裏使用fetchall方法,因爲你只是插入它,而不是提取 –

+0

我應該使用什麼方法呢?謝謝! – DommyCastles

1

爲什麼你重新選擇數值?試試只有單引號:

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

另外,檢查你的PHP錯誤日誌,它可能會給你一些見解。

並根據docs,我相信你必須使用exec() vs query(),做非選擇查詢,如插入,更新和刪除。如果您計劃將變量傳遞給$sql變量,則還應該閱讀prepare

0

這裏有一些語法規則可循:

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 

然後綁定的價值觀與你的變量,將工作