使用PHP无法正常插入数据库

时间:2014-10-06 21:14:04

标签: php mysql sql

<?php
// Create connection
$DB=mysqli_connect("88.80.185.241","Test","","Test");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else{
  echo "Connected";
  echo "<br>";
}
// 

$Table = mysqli_query($DB, "SELECT * FROM TBL_Time");

while($Row = mysqli_fetch_array($Table)){
    echo "Date: " . $Row['Date'] . " | Time: " . $Row['Time'];
    echo "<BR>";
}


$Row = mysqli_fetch_array($Table);

$Date = date("d-m-Y"); 
$Time = time();

echo "Date: " . $Date . " | Time: " . $Time;

$Insert = "INSERT INTO TBL_Time (Date, Time) VALUES (:D, :T)";
$PreQuery = $DB->prepare($Insert);

$PreQuery->bind_param(':D', $Date);
$PreQuery->bind_param(':T', $Time);


$PreQuery->execute();

?>

为什么插入不工作?我可以阅读数据库但无法插入。我检查了特权,看起来很好。

我尝试过移动的东西,但没有任何地方

2 个答案:

答案 0 :(得分:4)

您正在使用带有:而不是?的PDO样式占位符语法以及s参数来告诉它它是绑定中的字符串。

这两种类型的占位符不会相互混合/互换。

$Insert = "INSERT INTO TBL_Time (Date, Time) VALUES (?, ?)";
$PreQuery = $DB->prepare($Insert);

$PreQuery->bind_param('s', $Date);
$PreQuery->bind_param('s', $Time);

阅读两者及其差异:


<强> 脚注:

引用法希姆:

  

使用DATETIME类型的一个变量,而不是varchar类型的两个变量

答案 1 :(得分:0)

这是不正确的,因为$ DB不是对象,而是您将其用作对象! (仅在使用关键字new时才创建对象)

$Insert = "INSERT INTO TBL_Time (Date, Time) VALUES (:D, :T)";
$PreQuery = $DB->prepare($Insert);

$PreQuery->bind_param(':D', $Date);
$PreQuery->bind_param(':T', $Time);


$PreQuery->execute();

所以写下来代替上面的代码:

$Date = mysql_escape_string($Date);
$Time = mysql_escape_string($Time);
mysqli_query($DB,"INSERT INTO TBL_Time (Date, Time) VALUES ($Date, $Time)");