2016-09-20 4 views
-1

私は1年前に行った古い請願サイトに気付きましたが、PHPサーバのアップグレード以降しばらくは働いていないので、修正しています。私はそのほとんどを修正しましたが、今すぐ電子メールを確認することに固執しました。古いMySQLコードをMySQLiに変換するには?

警告:mysqli_num_rows()は、パラメータ1がmysqli_resultされることを想定し、ライン上の/home/merlin/public_html/index.phpで与え アレイ64

警告:mysqli_query()は、少なくとも2つのパラメータを想定し、 mysqli_error()は正確に1パラメータ、0ライン75

に/home/merlin/public_html/index.phpで与え期待:線上 /home/merlin/public_html/index.php 75

警告が与えられる1

CODE:(私は修正しようとしました)

<?php 

     if(isset($_GET['key']) ? $_GET['key'] : '') { 

      include('database.php'); 

      $confirmId = (isset($_GET['key']) ? $_GET['key'] : null); 
      $errorMessage = ""; 
      $validCount = 0; 

    $sql = "SELECT confirmed FROM email_list WHERE confirmationcode='$confirmId'"; 
    $sqll = mysqli_query($mysqli,$sql); 
    $result = mysqli_fetch_array($sqll); 
    $validCount = mysqli_num_rows($result); 


      if($result['confirmed'] == 1) { 

       echo "<div class=\"notice error\">You have already confirmed this petition signup.</div>"; 

      } else if($result['confirmed'] == 0){ 

       $query = "UPDATE email_list SET confirmed = 1 WHERE confirmationcode='$confirmId'"; 

       mysqli_query($query) OR die(mysqli_error()); 

       echo '<div class=\"notice error\">Your petition has been accepted, Thank you and with your help we might just get Merlin back on our screens. Why not spread the word on Twitter and Facebook? Just quick the icons to the right.</div>'; 

      } 

     } 

     ?> 

PREVIOUS CODE:(からの変換)

<?php 

     if(isset($_GET['key']) ? $_GET['key'] : '') { 

      include('database.php'); 

      $confirmId = (isset($_GET['key']) ? $_GET['key'] : null); 

      $errorMessage = ""; 
      $validCount = 0; 

      $query = "SELECT confirmed FROM email_list WHERE confirmationcode='$confirmId'"; 
      $result = mysql_query($query); 
      $validCount = mysql_num_rows($result); 

      if($result['confirmed'] == 1) { 

       echo "<div class=\"notice error\">You have already confirmed this petition signup.</div>"; 

      } else if($result['confirmed'] == 0){ 

       $query = "UPDATE email_list SET confirmed = 1 WHERE confirmationcode='$confirmId'"; 

       mysql_query($query) OR die(mysql_error()); 

       echo '<div class=\"notice error\">Your petition has been accepted, Thank you and with your help we might just get Merlin back on our screens. Why not spread the word on Twitter and Facebook? Just quick the icons to the right.</div>'; 

      } 

     } 

     ?> 

NEW database.phpで:

​​
+0

RTFM? http://php.net/manual/en/mysqli-stmt.num-rows.php関数はステートメントハンドルを期待しています。エラーが表示されている場合は、配列を渡しています。 –

+0

エラーテキストには何が書かれているのか分かりませんか? –

答えて

0

あなたは$を使用する必要がありますあなたのケースではmysqli_queryの結果ではなく、配列形式のmysqli_fetch_arrayのためです。 ...この行のお手伝いをします私が見つけた

$sql = "SELECT confirmed FROM email_list WHERE confirmationcode='$confirmId'"; 
$sqll = mysqli_query($mysqli,$sql); 
$result = mysqli_fetch_array($sqll); 
$validCount = mysqli_num_rows($sqll); 
+0

エラーを削除したと思われ、ステータスが変更されました...ありがとうございます。エラーで別の問題があります...それは動作しますが、応答で私はエラーを参照してくださいので修正する必要があります...もう一度質問を投稿します:)ありがとう – James

0

一つのエラー:

mysqli_query($query) OR die(mysqli_error()); 

は接続への参照を必要とし、次のようになります。

mysqli_query($mysqli, $query) OR die(mysqli_error()); 

mysqlの間の差をとmysqli関数は、mysqliで接続を参照するための要件です。

もちろん、SQLインジェクションから守るために、準備文を使用してください!

+0

両方の回答は、 1つだけ。 – James

+0

涼しい、私が助けることができてうれしい –

関連する問題