2017-09-03 21 views
-1

テーブル内のエントリを削除しようとするたびにPHPでmySQLに問題が発生していますが、エラーは出力されます。PHPでテーブルから削除するときにmySQLエラーが発生する

警告:mysqli_query()function.mysqliクエリ]:mysqli_num_rows()は ヌル

を与え、パラメータ1はmysqli_resultされることを期待:mysqliの

警告を取得できませんでしたが、以下のようにエラーがあります

警告:mysqli_close()[function.mysqli-閉じる]:mysqliの

を取得できませんでした私はなぜこれが起こっている、それは非常に簡単かもしれ動作するように見えることはできませんが、私はむしろ、新しいですとても希望的なmySQLに私が間違っている場所を教えてくれる人がいます。

<? 
if(isset($_GET['deleteTweet'])) { 
    $deleteTweet = $_GET['deleteTweet']; 

    $sql = "DELETE FROM bestTweets WHERE id=".$deleteTweet; 

    if (mysqli_query($conn, $sql)) { 
     echo "Record deleted successfully"; 
    } else { 
     echo "Error deleting record: " . mysqli_error($conn); 
    } 
    mysqli_close($conn); 
} 

$sql = "SELECT id, tName, tUsername, tTimeDate, tBody FROM bestTweets"; 
$result = mysqli_query($conn, $sql); 

$onMouseOver = 'onmouseover="this.src='."'IMAGES/binBtn_Hover.svg'".'" '; 
$onMouseOut = 'onmouseout="this.src='."'IMAGES/binBtn.svg'".'"'; 

if (mysqli_num_rows($result) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($result)) { 
     echo 
     '<div id="tweetContainer" class="tweetContainer"> 
      <div id="tweetMain"> 
       <div id="tweetName"> 
        <p>'.$row['tName'].'</p> 
       </div>'. 

       '<div id="tweetUsername"> 
        <p>'.$row['tUsername'].'</p> 
       </div>'. 

       '<div id="tweetDateTime"> 
        <p>' .$row['tTimeDate'].'</p> 
       </div>'. 

       '<div id="tweetBody"> 
        <p>'.$row["tBody"].'</p> 
       </div> 
       <div id="tweetSave"> 
        <form action="Saved.php?isset=true&deleteTweet='.$row["id"].'" method="post"> 
         <button type="submit" name="binBtn1" class="saveBtn"><img src="IMAGES/binBtn.svg"'.$onMouseOver.$onMouseOut.' width="50px" height="50px"></button> 
        </form> 
       </div> 
      </div> 
     </div>';} 
    } 
    else { 
     echo "0 results"; 
    } 
mysqli_close($conn); 
?> 
+0

'$ conn'を接続とし​​て定義しましたか?なぜあなたはクエリを実行する前に 'mysqli_close($ conn);'を実行するのですか? – Qirel

+0

あなたのコードはSQLインジェクションの脆弱性がありますので、mysqliを[parameter binding](http://php.net/manual/en/mysqli-stmt.bind-param.php) –

答えて

2

行を削除する場合、最後に行うのは接続を閉じることです!

に変更...

<? 
if(isset($_GET['deleteTweet'])) { 
    $deleteTweet = $_GET['deleteTweet']; 

    $sql = "DELETE FROM bestTweets WHERE id=".$deleteTweet; 

    if (mysqli_query($conn, $sql)) { 
     echo "Record deleted successfully"; 
    } else { 
     echo "Error deleting record: " . mysqli_error($conn); 
    } 
    //mysqli_close($conn); 
} 

は、次のクエリは、閉じられた接続を使用しようとしていました。

+0

と併用する必要があります。また、 $ conn'はmysqli接続かどうかです。 IIRC 'mysqli_open(...)'は、接続を開くことができなかった場合に 'NULL'を返します。 – DBX12

+1

私は多くの仮定をしています - 接続は削除のために働くのでOKです。OPはある時点でプリペアドステートメントを使用するように変更されます。しかし今のところ、これは少なくとも問題がどこにあるかを示すべきです。 –

+0

実際、改善の余地はありますが、あなたの答えは主な問題点です。 – DBX12

0

つの提案:(私はあなたのコードで$conを見つけることができないよう)あなたが成功した接続を確立している

  1. チェック。
  2. 接続が途中で終了していないことを確認してください。
関連する問題