2016-10-05 5 views
0

私はPHPを学びたいと思っています。そうするために、私はURL短縮語を作成しようとしています。現在、現在リンクを入力してデータベースに入力することができます。それは文字列をランダム化しませんが、後でそれを行うつもりです。 (私は問題にぶつかるのを避けるために自分自身を変更しました)。ここでクエリのデータを取得する

は(私のテーブルは、 'URLの' と呼ばれる)現在、私のテーブルです:

Table

あなたは(私にとってはlocalhost)/ somepathに行くとき、それは自動的にリダイレクト/process.php?id = somepath

process.phpでは、指定されたパス(somepath)がデータベースに存在するかどうかをチェックし、元の値を取得します。私が持っている問題は、元の価値を得ることです。繰り返しますが、私はPHPを初めて使用しており、クエリの仕組みを理解するのに問題があります。

$query = "SELECT original FROM urls WHERE new = '$new'"; 
$result = $conn->query($query); 

$ resultから情報を取得するにはどうすればよいですか?または、それは基本的にそれを実行するので、私は$結果の後に$クエリから取得するはずですか?

何を使用するのか説明してください。私はこれを理解していません。

ありがとう、申し訳ありませんが、これは本当にばかげた質問です。

+0

** WARNING **:あなたが使用する必要がありますmysqli' '使用する場合は、[パラメータ化クエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[ 'bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用して、クエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

答えて

0

結果。

これを試してみてください:

$query = "SELECT original FROM urls WHERE new = '$new'"; 
$result = $conn->query($query); 
if ($result->num_rows > 0) { 
// output data of each row 
while($row = $result->fetch_assoc()) { 
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; 
} 
} else { 
    echo "0 results"; 
} 

あなたはまた、HTMLテーブルに結果を置くことができます。

if ($result->num_rows > 0) { 
    echo "<table><tr><th>ID</th><th>Name</th></tr>"; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>"; 
    } 
    echo "</table>"; 
} else { 
    echo "0 results"; 
} 
0
$query = "SELECT original FROM urls WHERE new = '$new'"; 
$result = $conn->query($query);  
$rows = mysql_fetch_array($result); 
foreach($rows as $row){ 

    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; 
} 

あなたはグラブのためにmysql_fetch_arrayまたはmysql_fetch_assocのいずれかを使用することができますMySQLiをオブジェクト指向であなたのテーブルからデータをつかむために使用fetch_assoc()

1

をこのコードでは、私はprepared statementためobject oriented approachを使用したり、あなたはprocedural styleに残っている場合、あなたはまだそれを使用することができます。

チェックこのリンク:だから、基本的にhttp://php.net/manual/en/mysqli.prepare.php

、このコードでは何が起こるかは、クエリが、このスタイルは、入力が自動的にあるため、SQLインジェクションを回避するための一つの方法である(使用されるように、パラメーターをバインドその後、準備されているということですエスケープされた)。結果は最初に変数$originalに格納され、次にクエリが返す行の数を数えます。 1より大きい場合は一致することを意味し、0の場合は一致しないことを意味します。

一致するものがある場合は、変数$originalの値をエコーし​​ます。

<?php 

    $stmt = $conn -> prepare("SELECT original FROM urls WHERE new = ?"); 
    $stmt -> bind_param('s',$new); 
    $stmt -> execute(); 
    $stmt -> bind_result($original); 
    $stmt -> fetch(); 
    $stmt -> store_result(); 

    $res = $stmt -> num_rows(); 

    $stmt -> close(); 

    if($res > 0){ 
    echo $original; 
    } 
    else{ 
    //not found 
    } 

?> 
関連する問題