2017-04-16 21 views
0

準備済みのステートメントにSQLクエリを書き直そうとしています。このクエリは正常に動作し、私に正しい出力を与えている:私は以下のコードに上記のコードを書き直すことを試みたバインドされた結果が返されない出力

<?php 
    $sql = "SELECT * FROM stores ORDER BY RAND () LIMIT 3"; 
    $res = $mysqli->query($sql); 
    //print($res); 
    if ($res->num_rows > 0) { 
    // output data of each row 
    while($row = $res->fetch_assoc()) { 
     echo "id: " . $row["id"]. "<br>" . 
      "Headline: " . $row["head"]. "<br>". 
      "Description: " . $row["desc"]. "<br>";  
    } 
} else { 
    echo "0 results"; 
} 
?> 

が、私は、任意の出力を取得しておりません。私が何か完全に間違っていることはありますか?

はコード

<?php include 'dbconnection.php' ?> 

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 

if (mysqli_connect_errno()) { echo "Error: no connexion allowed : " . mysqli_connect_error($mysqli); } 

$query = " SELECT id, headline, description FROM stores WHERE id=? AND headline=? AND description=? "; 
$stmt = $mysqli->prepare($query); 

$stmt->bind_param("iss",$id, $head, $desc); /* make sure that $id, $head, $desc are defined and that $id deserves a 'd' an not a 'i' */ 

$results = $stmt->execute(); 
$stmt->bind_result($id, $head, $desc); /* make sure you use all cols as you used SELECT (*) */ 
$stmt->store_result(); 

if ($stmt->num_rows > 0) { 
while($stmt->fetch()){ 
    echo"[ $id -> $head -> $desc ]<br />"; 
    } 
} 
else 
{ echo"[ no data ]"; } 

?> 
+1

'のerror_reporting(E_ALL)を使用してください。あなたのページの上にini_set( 'display_errors'、1);とエラーがスローされた場合は私たちに知らせてください。 '$ id、$ head、$ desc'が定義されていることと、$ idが' d'を満たしていることを確認してください。最後に、 ')'と 'print_r($ result);' ' – OldPadawan

+0

こんにちは。私は 'error_reporting(E_ALL);を追加しました。 ini_set( 'display_errors'、1); '。私は私が得ているエラーで私の質問を更新しました。 – Mimi

+0

'$ result-> fetch_object'' $ stmt-> execute();とは何ですか? $ stmt-> bind_result($ col1、$ col2、...そしてすべての列が必要です); $ stmt-> store_result(); ($ stmt-> num_rows> 0){while($ stmt-> fetch()){/ *読み進める* /} ' – OldPadawan

答えて

2

EDIT:2ページ、およびSELECTは(2ページ目に)実際にそこにあるように、より調査の後、Page1の私の更新の答えからDBからIDを挿入し、最後のニーズ:

その後、
<?php 

/* this code is for insert.php */ 

error_reporting(E_ALL); ini_set('display_errors', 1); 

$host = ""; /* your credentials here */ 
$user = ""; /* your credentials here */ 
$pwd = ""; /* your credentials here */ 
$db = ""; /* your credentials here */ 

/* store in PHP variables */ 

$head = $_POST["head"]; /* you can also perfom some checking on this data coming from user */ 
$desc = $_POST["desc"]; /* you can also perfom some checking on this data coming from user */ 
$place = $_POST["place"]; /* you can also perfom some checking on this data coming from user */ 

echo"[ $head/$desc/$place ]"; /* just checking values */ 

/* connexion to db */ 
$mysqli = mysqli_connect("$host", "$user", "$pwd", "$db"); 

if (mysqli_connect_errno()) { echo "Error: no connexion allowed : " . mysqli_connect_error($mysqli); } 

$query = " INSERT INTO `stores` (`headline`, `description`, `place`) VALUES (?, ?, ?) "; /* make sure all columns of DB match ! */ 

$stmt = $mysqli->prepare($query); /* prepare query */ 

$stmt->bind_param("sss", $head, $desc, $place); /* bind param will sanitize */ 

print_r($stmt->error_list); /* any error ? */ 
print_r($stmt->get_warnings()); 
print_r($stmt->error); 

if (!$stmt->execute()) { echo $stmt->error; } else { echo"[ successful insert ? -> true ]"; 

$last_id = $stmt->insert_id; echo"[ last ID ? -> $last_id ]"; echo"<a href=\"select_shuffle.php?id=$last_id\">GO TO SELECT/SHUFFLE PAGE</a>"; /* in order to get last inserted ID that will be needed next page */ 

/* header("Location: select_shuffle.php?id=$last_id"); -> can be performed only if no output before, otherwise you'll an error */ } 

?> 

、選択ページ:

<?php 

/* this code is for select_shuffle.php */ 

error_reporting(E_ALL); ini_set('display_errors', 1); 

$host = ""; /* your credentials here */ 
$user = ""; /* your credentials here */ 
$pwd = ""; /* your credentials here */ 
$db = ""; /* your credentials here */ 

/* store in PHP variable */ 

$id = $_GET["id"]; /* you can also perfom some checking on this data (is numeric ? (int) ?) */ 

echo"[ last insert ID -> $id ]"; /* just checking value */ 

// connexion to db 
$mysqli = mysqli_connect("$host", "$user", "$pwd", "$db"); 

if (mysqli_connect_errno()) { echo "Error: no connexion allowed : " . mysqli_connect_error($mysqli); } 

$query = " SELECT * FROM stores WHERE id=? "; 
$stmt = $mysqli->prepare($query); 

$stmt->bind_param("i",$id); /* here we make use of $var ID */ 

$results = $stmt->execute(); 
$stmt->bind_result($col1, $col2, $col3); /* make sure you use all cols as you used SELECT (*) */ 
$stmt->store_result(); 

if ($stmt->num_rows > 0) { 
while($stmt->fetch()){ 
echo"[ $col1 -> $col2 -> $col3 ]<br />"; /* here its echo'd but you do whatever you need */ 
} 
} 
else 
{ echo"[ no data ]"; } 

?> 
+0

ありがとうございました。あなたのコードで質問を更新しました。私が見ているように、今はうまくいくはずですが、私は「データなし」になっています。 IDは私のデータベースの 'int'です。 – Mimi

+0

@Mimi:使用前にecho '$ id、$ head、$ desc'と入力してください(必要に応じてすべてが期待どおりになるようにしてください)。もし必要なら' i'に 'd'を変更してください。 – OldPadawan

+0

@Mimi:' $ stmt-> $ id/$ head/$ desc'とすると、 '$ id - > $ head - > $ desc]
"; $ head/$ desc'のようにbind_result($ id、$ head、$ desc) 'ともに – OldPadawan

0

使用PDOルークを更新しました!あなたは閉じ括弧が欠落しているあなたの最初の文で

$b=$pdo->prepare(" SELECT FROM `table` WHERE `val1`=:val1 AND `val2`=:val2 "); 
$b->bindParam(":val1",$val1); 
$b->bindParam(":val2",$val2); 
$b->execute(); 
+0

OPは別の方法を求めません... – OldPadawan

0

$ stmtは= $ mysqli->() "ID =?AND見出し=?と説明=?店舗SELECT * FROM" 準備;

第4声明には、最後のセミコロンがありません。

$ result = $ stmt-> get_result();それは場合に役立ちます:)

は見

+0

コメントありがとうございました。私はちょうど私が得るエラーで私の質問を更新しました。 – Mimi

-1
<?php 

// '?' placeholders for variables 
$stmt = $mysqli->prepare("SELECT * FROM stores WHERE id=? AND headline=? AND description=?"); 

/* Bind result */ 
$stmt->bind_param($id, $head, $desc); 

// Execute prepared statement 
$stmt->execute(); 

/* Fetch values for each row */ 
$result = $stmt->get_result() 

while ($row = $result->fetch_object()) { 
    $result[] = $row;  
}  
echo $result; 

// Close statement       
$stmt->close(); 

// Close connection 
$mysqli->close(); 

?> 
+0

私はそれを読むことができません、申し訳ありません。 – Mimi

+0

'bind_param'には最初のパラメータがありません – Terminus

関連する問題