2013-10-30 6 views
0

저는 PHP에 익숙하지 않고 모든 기사에 대해 고유 한 페이지를 만드는 데 수 시간 동안 고생했습니다. 내가 무엇을해도 그것은 작동하지 않을 것이다.mysql의 각 행에 대한 페이지

나는 mysql을 mysqli로 변환해야한다는 것을 알고 있지만이 작업을 시작하고 싶다.

내가 그것을 그냥 밖으로

어떤 제안이 문서 테이블에서 "이름"을 인쇄되지 않는 빈 페이지를 표시 URL/video.php? ID = 3로 이동? 작동

<a href="/video.php?id=<? echo $row[id]; ?> 

을 다음과 같이의 index.php에서 연결

video.php

<?php 

include "connect.php"; 


$id = mysql_real_escape_string($_GET['id']); 
$query = "SELECT `name` FROM `article` WHERE `id` = '.$id.'"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 

// Echo page content 
echo $row['name']; 
?> 

임. ID가 숫자 필드 인 경우 귀하의 질문에 암시하는 것 같은 ID가 숫자 필드의 경우

+2

실제로 id가 존재합니까? [mysql_error] (http://php.net/mysql_error)를 사용하여 쿼리가 올바르게 작동하는지 확인하십시오. – kero

+0

질문에 대한 답이 맞는지는 모르겠지만 echo $ _GET [ 'id']; 이 경우 id가 3 인 경우 – Frederik

답변

0

내가 보는 또 다른 일을,하지만 난 당신이 한 경우 가정 :

  • 당신이 MySQL 서버에 연결하기 위해 관리 적이 있습니까?
  • 데이터베이스를 선택하셨습니까?
  • PHP에서 mysql_result 기능을 알고 있습니까? 그리고
  • 당신은 MySQL에서 LIMIT을 알고 있습니까?

시도 :

MySQL은 :

/** 
* Connect and define your connection var 
*/ 
$connection = mysql_connect("localhost","root",""); 
/** 
* Select your database 
*/ 
mysql_select_db("mydatabase",$connection); 

/** 
* Check if exists "id" in $_GET 
*/ 
if(array_key_exists("id" , $_GET)) 
{ 
    $id = mysql_real_escape_string($_GET [ "id" ],$connection); 
    /** 
    * Remember use LIMIT 
    */ 
    $source = mysql_query("SELECT `name` FROM `article` WHERE `id` = '$id' LIMIT 1",$connection); 

    /** 
    * if you need print only name 
    */ 
    if(mysql_num_rows($source)) 
    { 
     // print only name 
     echo mysql_result($source); 
    } 
    /** 
    * but if you need retrive array 
    */ 
    $row = mysql_fetch_assoc($source); 
    echo $row["name"]; 
} 

MySQLi :

MySQL의에 LIMIT 한판 승부 읽어

/** 
* Connect and define your connection var 
*/ 
$connection = mysqli_connect("localhost","root",""); 
/** 
* Check if is connected[ http://us2.php.net/manual/en/mysqli.connect-errno.php ] 
*/ 
if(mysqli_connect_errno() == 0) 
{ 
    /** 
    * Select your database 
    */ 
    mysqli_select_db($connection , "mydatabase"); 

    /** 
    * Check if exists "id" in $_GET 
    */ 
    if(array_key_exists("id" , $_GET)) 
    { 
     $id = mysqli_real_escape_string($connection,$_GET [ "id" ]); 
     /** 
     * Remember use LIMIT 
     */ 
     $source = mysqli_query($connection,"SELECT `name` FROM `article` WHERE `id` = '$id' LIMIT 1"); 

     /** 
     * if you need print only name 
     */ 
     if(mysqli_num_rows($source)) 
     { 
      // print only name 
      $row = mysqli_fetch_array($source); 
      echo $row[0]; 
     } 
     /** 
     * but if you need retrive array 
     */ 
     $row = mysqli_fetch_assoc($source); 
     echo $row["name"]; 
    } 

} 

그리고,

행운을 빈다!

+0

인 ID 인쇄) mysql_result (예상 적어도 2 개 매개 변수 (1) 귀하의 PHP 버전은 무엇 라인 29 – Frederik

+0

에 /에 주어진 ? 설명서를 읽었습니까? –

-1

, 그

$id = (int)$_GET['id']; 
$query = "SELECT `name` FROM `article` WHERE `id` = $id"; 

을해야합니다.

참고 쿼리 문자열에서 점을 제거하여 id이 숫자 필드인지 여부를 쿼리가 무효화하도록했습니다. 이 SQL 주입을 중지 아무것도하지 않는

"SELECT `name` FROM `article` WHERE `id` = $id"; 

또는

'SELECT `name` FROM `article` WHERE `id` = '.$id; 

당신은 당신의 인용 부호를 혼합하는

+0

오히려 의견을 말한 후 대답을 생각합니다. – kero

+0

질문이 왜 효과가 없었습니다. 내 생각 엔 id 필드는 숫자이며이 경우 문자열을 쿼리하면 작동하지 않습니다. 그렇게해도 점들로 인해 쿼리가 유효하지 않게됩니다. – CompuChip

+0

"추측"하면 아마도 도움이 될 것입니다. 답변을 추측해서는 안됩니다. 'mysql_real_escape_string'을 사용하면 숫자 값을 사용할 수 있습니다. 그러나'intval'이나 더 잘 맞는 것을 사용해야한다고 말하는 것은 아닙니다. – kero

1

...

"SELECT `name` FROM `article` WHERE `id` = '.$id.'"; 

이 있어야 할 ... ...

0

y $ row 변수에 어떤 값이 있는지 테스트 했습니까? 값을 보려면 var_dump($row)을 사용하십시오.

BTW, 당신은 ID 확인해야합니다 :

if (isset($_GET['id'])) 
{ 
    $id = $_GET['id']; 
    echo $id; 
} 
+0

아무것도 사용하지 않고 그냥 echo $ _GET [ 'id']; 경고 : 그런 다음이 경우 그것은 이름을 인쇄하고 다음과 같은 오류 3 – Frederik

관련 문제