2014-12-17 3 views
1

온라인 WYSIWYG 편집기를 구축 중이며 클라이언트가 HTML의 <textarea> 메소드를 통해 자신의 웹 페이지를 편집 할 수있는 메소드를 구축했습니다. 이제 유일한 문제는 데이터베이스에 직접적으로 대처 한 적이 없다는 것입니다. (결코 '나는 결코 ... 결코 ...을 말하지 않습니다.)MySQL 데이터베이스 (PHP)에서 정보 얻기

나는 이것에 대해 몇 가지 사실을 심각하게 고수하고 있습니다 ... 나는 누군가를 바라고 있습니다. 이 문제를 해결하는 방법을 알고 있습니다. 다음과 같이

그래서, 코드는 다음과 같습니다
(이 모든 body 태그 내에 ...)

데이터베이스에 정보를 밀어 실제 코드가 작동
<!-- Database Connection --> 
<?php 
    if ($_POST['submit']) { 
     // MySql Database Connection, connecting at ("?", with details "user", "password") or spit error 
     mysql_connect ("localhost", "user", "password") or die ('Error: ' . mysql_error()); 
     // Select database named ("dbName") or spit error 
     mysql_select_db("dbName") or die ('Data error:' . mysql_error()); 
     // Select text to input, from textarea, name="textName" 
     $text = mysql_real_escape_string($_POST['textName']); 
     // Input^into table "TableName", field (field) 
     $query="INSERT INTO TableName (field) VALUES ('$text')"; 
     // Submit query, or spit error 
     mysql_query($query) or die ('Error updating database' . mysql_error()); 
    } 
?> 

<!-- Actual Text Input --> 
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <textarea name="textName">INITIAL TEXT</textarea> 
    <input name="submit" type="submit" value="submit" /> 
</form> 

, 내가 할 수있는 아주 쉽게 입력 textarea에 텍스트를 입력하고 제출을 클릭 한 다음 데이터베이스 내부에서 살펴 봅니다. 그러나 이제는 데이터베이스에서 정보를 가져와야합니다. 교체 (이 또 다른 문서에 수행됩니다) 웹 페이지 및 텍스트 영역 내부를 표시하려면

    1. 그것을 표시하려면, :

      나는 두 가지 방법으로 잡아 당깁니다 필요

      "INITIAL TEXT".

    (실제 서버에 대한 정보를 신속하게 제거했기 때문에 작동하지 않아야하는 코드가있는 경우).

  • +2

    헤드 업. mysqli로 전환하십시오. mysql은 감가 상각 된 라이브러리이다 –

    +1

    더 이상 배우기 전에 mysql_ * 함수 사용을 중단한다. PDO 또는 mysqli를 살펴보십시오. – Robbert

    +4

    새 코드에서 [mysql_ *'functions] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)를 사용하지 마십시오.더 이상 유지 관리되지 않으며 [공식적으로 권장되지 않습니다] (https://wiki.php.net/rfc/mysql_deprecation). 대신 [prepared statements] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 알아보고 [PDO] (http://us1.php.net/pdo) 또는 [MySQLi] (http : //)를 사용하십시오. us1.php.net/mysqli). –

    답변

    1

    오비완 케노비 (Obi-Wan Kenobi)의 말에 따르면, "힘의 방법에 대해 많이 배워야한다." 하지만 괜찮아요 ... 우리는 인생의 어느 곳으로 가고 싶다면 더 많은 것을 배울 필요가 있습니다.)

    그럼에도 불구하고, 나는 도움을 줄 것입니다. 첫째로, DB 디자인에 조금 읽으십시오. 아마도 타임 스탬프, 사용자 ID 및 고유 ID [DBMS가 수행 할 수있는 ]와 같은 데이터 테이블에 둘 이상의 데이터를 입력해야합니다. 당신이 mysqli_에 대해 알 수 있습니다

    주요 것은 * 대 mysql_로 *입니다 필요한 데이터 객체의 포함 :

    $connection = mysqli_connect("localhost","root","","test"); 
    
    $sql = "select * from myTable;"; 
    $result = mysqli_query($connection,$sql); 
    

    그리고 위의 코드는 또한 "그 결과 자원"을 취득하기위한 프라이머의 역할 MySQL에서. 그러나 "결과 자원"은 실제 데이터가 아닙니다. 그것은 마치 "포인터"와 같습니다. 당신이 이것을했다면 :

    echo $result; 
    

    쿼리가 성공하면 "1"이됩니다.

    다음은 데이터베이스에서 데이터를 가져 오기 위해 수행해야 할 작업을 이해하는 데 도움이되는 간단한 코드입니다. DB 테이블 구조에 대해 몇 가지 가정을 할 것이며, 고안된 "$ foo_id"변수를 포함시켜 원하는 부분 만 알고 있다고 가정 할 것입니다.

    이 시점에서
    $sql = "select timestamp, user_id, textfieldname from myTable where post_id = $foo_id;"; 
    $res = mysqli_query($connection,$sql); 
    if ($res && $res->num_rows) { //we got a result, and the result contains data (at least 1 row) 
    
        $return = array(); //this array will hold data for our script 
    
        while ($row = $res->fetch_assoc()) { 
        $return['text'] = $row['textfieldname']; 
        $return['ts'] = $row['timestamp']; 
        $return['user'] = $row['user_id']; 
        } 
    } 
    

    , 배열 $ 반환 이전에 저장된 텍스트입니다 중 하나가 관심의 세 가지 변수를 개최한다.

    +1

    입력에 대해 여러 부분을 추가해야한다는 것을 알고 있습니다.이 작업을 계획하고 있습니다. 지금은 입력에 대해 간단하게 작업하고 있습니다. Mysqli는 MySQL과 동일한 데이터베이스를 사용합니까? – lsrwLuke

    +0

    좋습니다. 그리고 나는 이해합니다. 제가 언급했듯이, 우리는 모두 어딘가에서 시작합니다. 덩어리로 물건을 다루는 것은 나쁜 생각이 아닙니다. 프로그래밍은 "정확한 과학"이라는 것을 기억하십시오. 대부분의 사람들이 당신의 질문에서 너무 "단순하다"는 것처럼 보일 경우, 우리 대부분은 약간의 pedantic/exacting/perfectionistic을 답과 코멘트로 사용하게 될 것입니다. –

    +0

    조금 간단하다면 미안 해요. 나는 경험이 없다. 하하, 같은 데이터베이스? – lsrwLuke

    관련 문제