2012-05-03 104 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 

然后绑定的价值观与你的变量,将工作