PDO语句未插入数据库

时间:2017-02-21 23:10:00

标签: php database pdo insert statements

您好我有这个代码不起作用。我一直在用它大约一个小时,似乎找不到任何错误,我不知道它是什么。也许有人可以帮助我。

  

插入脚本:

    <?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中使用警报。 它没有给我任何错误,我有一个用实际属性制作的数据库。我需要帮助:(

2 个答案:

答案 0 :(得分:-1)

我认为你应该使用$ link-&gt; exec($ sql);

答案 1 :(得分:-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操作的很好的入门。