2014-10-06 5 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를 사용하여 데이터베이스에 삽입 할 수 없음

나는 주위에 물건을 이동하려했지만 당신은 그것이 바인딩의 문자열의 IT에게 대신 ?:뿐만 아니라 s 매개 변수를 사용하여 PDO 스타일 자리 구문을 사용하고 어디서든

+1

일부 오류 검사를 추가하면 오히려 빨리 찾을 수 있습니다 :

$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(); 

그래서 위의 대신이 코드를 작성 (new 키워드를 사용하는 경우 객체 만 생성됩니다). –

+1

잘 모르겠지만 날짜를 예약어라고 생각한다면 열 이름을 지정하면 ... \ (Date \', \'Time \') (backticks)와 같은 것입니다. – Rufinus

+1

PDO 자리 표시 자 구문을 사용하고 있습니다. ,'$ var'와'?'not :'var'을 사용하십시오 –

답변

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에 "varchar"타입의 변수 두 개 대신에'DATETIME' 타입의 변수 하나를 사용하라는 질문을 편집하십시오. –

+0

아아 덕분에 PDO와 mysqli의 차이를 깨닫지 못했습니다. –

+0

@FahimParkar 좋은 지적입니다. 당신이 거기에두고 싶다면 당신의 의견을 +1 할 것입니다. 나는 당신에게 신용으로 그것을 메모 할 것입니다. –

0

이 잘못은 $ DB이기 때문에 객체가 아니라 객체로 사용하는 것입니다!

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

이 경우 변수는 스크립트에 의해 생성되고 사용하기에 안전하지만 변수를 직접 삽입 한 쿼리로 준비된 문을 바꾸지 않는 것이 좋습니다. 그리고 따옴표없이. – jeroen

관련 문제