2014-10-06 160 views
-1
<?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(); 

?> 

爲什麼插入不工作?我可以讀取數據庫但不能插入。我檢查了特權,他們似乎很好。使用PHP不能正常工作插入數據庫

我試着走動的事情,但您使用的PDO風格的佔位符語法與:代替?還有s參數來告訴它這是在結合串還沒有得到任何地方

+1

添加一些錯誤檢查,你會相當快找出來。 – 2014-10-06 21:15:48

+1

不確定,但我認爲日期是一個保​​留字,如果你命名了你的列,所以你必須逃避它..像(\'Date \',\'Time \')(反引號) – Rufinus 2014-10-06 21:16:13

+1

您正在使用PDO佔位符語法,使用'$ var'和'?'不'':var' – 2014-10-06 21:18:25

回答

4

這兩種類型的佔位符不會相互混合/互換。

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

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

閱讀上都和他們的區別:


腳註:

報價法希姆:DATETIME

使用一個變量,而不是類型的兩個變量varchar

+0

我知道這是正確的答案,但如果可能的話編輯答案要求OP使用'DATETIME'類型的一個變量而不是'varchar'類型的兩個變量' – 2014-10-06 21:33:57

+0

啊謝謝我沒有意識到PDO和mysqli之間的區別 – 2014-10-06 21:39:25

+0

@FahimParkar好點。如果你想留在那裏,我會+1你的評論。我會記下你的信用。 – 2014-10-06 21:41:00

0

這是不正確的,因爲$ DB是不是一個對象,而是將它用作對象! (如果關鍵字新的使用對象僅創建)

$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)"); 
+1

儘管在這種情況下,變量是由腳本生成的,並且可以安全使用,但我絕不會建議用直接注入變量的查詢替換準備好的語句。並沒有引用。 – jeroen 2014-10-06 21:28:00