2017-01-20 1 views
1

PHPとMySQLを実践するためのステータス更新ページを作成しています。PHPで特定のIDをエコーし​​ようとするとSQLiエラーが発生する

現在、保存されたステータスをページにエコーしようとしています。

ステータスは、「ステータス」と呼ばれる行に保存され、すべて「ステータスID」という行の特定のIDが与えられます。

私が抱えている問題は、(string)$varを使用して文字列に変換するために使用したいフェッチが機能しないことです。 (例:$var)。

また、$idNum変数は後で使用するためのものであり、これとは関係がありません。

コードは次のとおりです(明らかに最初の変数は検閲されていないので、実際のコードで動作するデータベースに接続しようとしません) 問題は$fetchResにあります。

<?php 
$idNum = 1; 
$servername = "censored"; 
$username = "censored"; 
$password = "censored"; 
$db_name = "censored"; 
$conn = mysqli_connect($servername, $username, $password, $db_name); 

if ($conn->connect_error) 
{ 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT Status FROM SavedStatuses WHERE statusID=1;"; 
$statusQuery = mysqli_query($conn, $sql); 
$fetchRes = mysqli_fetch_assoc($statusQuery); 

if($conn->query($sql) == TRUE) 
{ 
    echo $fetchRes; 
} else { 
    echo "Failed to retrieve status, error: " . $conn->error; 
} 
?> 
+3

あなたは一度クエリを実行し、成功した結果をループします。 –

+0

mysqli_query、 '$ conn-> query'。どのmysqliアプローチを使用するのかを理解してください。 –

+0

回答を投稿できますか?私はこれにかなり新しいので、2番目のクエリがどこに出現しているのかも分かりません。 – Chaost

答えて

2

コメントに記載されているとおり、2回クエリしていて、成功した結果はループしていません。

"ループ"は、whileまたはforeachのいずれかを使用することです。この例ではwhileループを使用しました。 "公式" マニュアルから

例:

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5"; 

if ($result = $mysqli->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); 
    } 

    /* free result set */ 
    $result->free(); 
} 

/* close connection */ 
$mysqli->close(); 
?> 

だからあなたの場合には、あなたのコードは、のように読んでいました:

追記を:Statusstatusは2種類の動物ですので、大文字と小文字が一致するようにしてください(ループ内)。

<?php 
$mysqli = new mysqli("censored", "censored", "censored", "censored"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

$query = "SELECT Status FROM SavedStatuses WHERE statusID=1"; 

if ($result = $mysqli->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     echo $row["Status"]; 
    } 

    /* free result set */ 
    $result->free(); 
}else{ 
echo "The query failed: " . mysqli_error($mysqli); 

} 

/* close connection */ 
$mysqli->close(); 
?> 
+0

お返事ありがとうございました。今まで返信する機会はありませんでした。これは間違いなく機能しているので、私は今どのように動作するかを読むつもりです!ありがとうございました – Chaost

+0

@Chaostあなたは大歓迎です、*歓声* –

関連する問題