2017-02-21 6 views
0

안녕하세요.이 코드는 작동하지 않습니다. 나는 약 1 시간 동안 그것과 도청하고 있었고 어떤 오류라도 발견하지 못했고, 나는 그것이 무엇인지 모른다. 아마 누군가 나를 도와 줄 수있을거야.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에서 경고를 사용합니다. 그것은 나에게 오류를주지 않는다, 나는 실제 속성으로 만들어진 데이터베이스가있다. 나는 도움 :(당신이 $ 링크 -> 간부 ($의 SQL)를 사용한다고 생각

+1

쿼리가 작동하는지 확인 했습니까? 가장 먼저 염두에 두어야 할 것은 숫자 필드에 문자열을 넣는 것입니다 (price -> 'john') – nvisser

+0

준비된 문을 사용하고 준비 후에 쿼리를 실행하십시오. More here http://php.net/manual/en/pdo.prepared-statements.php – Grynets

+0

"효과가 없을 것"은 무엇을 의미합니까? if/then/else 문이 있습니다 - 코드 분기 중 어느 것이 실행됩니까? – miken32

답변

-1

필요,..

+0

왜 그렇게 생각하니? 그것을 뒷받침 할만한 정보가없는 전달하는 것 이상을 제공하십시오. – miken32

-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"; 
} 

은 지금 당신의 try 블록에 가야 위

$stmt = $link->prepare($sql); 
$stmt->execute(); 

모든이 줄

$link->query($sql) 

을 변경하고 삽입 작업을해야하거나 더 자세한 오류를 반환합니다. 다행히 그것이 당신을 가게하고 당신이 그것에 당신의 머리를 감쌀 것을 도울 것입니다. 이 link에는 php/mysql CRUD 작업에 대한 좋은 입문서가 있습니다.

+0

'$ link-> query'를 직접 호출하면 어떤 문제가 있습니까? 성명서 작성이 도움이된다고 생각하는 이유는 무엇입니까? – miken32

+0

나는 그것이 잘못되었다고 생각하지 않지만 OP를 위해, 그것은 그가 무엇이 일어나고 있는지 잘 알고 더 잘 이해하는 데 도움이 될 것입니다. 나는 또한 삽입/업데이트/삭제 문을 쓰는 것과는 대조적으로 쿼리를 선택하는 것이 더 좋다고 생각한다. 이 [link] (http://stackoverflow.com/questions/16381365/difference-between-pdo-query-and-pdo-exec)에서는 세부적인 차이점을 설명합니다. –

+1

답변은 문제 해결이 아니거나 "더 잘 읽도록"문제에 대답해야합니다. 일단 더 많은 담당자가 있으면 명확한 설명이나 디버그 제안을 제공하기 위해 질문에 대해 설명 할 수 있습니다. – miken32