2017-02-21 53 views
0

你好,我有这个代码不起作用。我一直在与它闹了大约一个小时,似乎无法找到任何错误,我不知道它是什么。也许有人可以帮助我。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

你是否检查过该查询正在工作?首先想到的是在字段中输入一个字符串(price - >'john') – nvisser

+0

尝试使用准备好的语句并在准备后执行查询。更多这里http://php.net/manual/en/pdo.prepared-statements.php – Grynets

+0

“不行”是什么意思?你有一个if/then/else语句 - 哪个代码分支被执行? – miken32

回答

-1

我认为你应该使用$链路> EXEC($的SQL);

+0

你为什么这么想?提供比通过的评论更多的东西,而无需支持。 – miken32

-1

让我们尽量简化问题,它看起来并不像你正在返回的数据库连接,以便您可以更好地理解,我们甚至可以从同一个脚本分贝

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

//设置属性(我们可以为您拿到后工作,因为我们都爱来重构我们不动它了呢?)在连接试块

$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