sql >> データベース >  >> RDS >> Mysql

mysql_num_rows()は、パラメーター1がリソースであり、ブール値が指定されていることを想定しています。

    UPDATEクエリが渡されると、mysql_query() mysql_num_rows()が成功した場合はブール値TRUEを返し、失敗した場合はFALSEを返します。 結果セットリソースのみを引数として受け入れます。 UPDATEクエリが影響を受けた行数を確認するには、mysql_affected_rows()を呼び出します。 接続リソースを引数として使用します。

    現在発生している問題の原因ではありませんが、or die(mysql_error())を追加することを強くお勧めします。 mysql_query()に 発生するMySQLエラーをキャッチするために呼び出します。 mysql_*を放棄することをお勧めします PHPマニュアルで推奨されているように、PHP PDO拡張機能を完全に支持して機能します。これは、機能とセキュリティで提供される多大なメリットと引き換えに、認知的オーバーヘッドをそれほど発生させません。

    それはさておき、これがあなたのコードを変更して、あなたが考えているもののように動作するようにする方法です:

    <?php
    // obtain a database connection
    $dbConn = mysql_connect($serverName, $user_name, $password) 
      or die("Cannot connect to server: " . mysql_error() . "<br />\n"); 
      // mysql error number rarely adds enough information to be worth including
    
    // select the database
    mysql_select_db($db_name, $dbConn) 
      or die("Couldn't select $db_name: " . mysql_error() . "<br />\n"); 
    
    // obtain escaped versions of query data for inclusion in update query
    // it is imperative to use mysql_real_escape_string() or equivalent if you're
    // going to use mysql_* functions instead of the far preferable PDO 
    // prepared statements; if you don't escape your data, you leave open the
    // possibility of SQL injection, which someone will certainly soon use to
    // screw up your website horribly
    $id = mysql_real_escape_string($_GET['id']);
    $additional_notes = mysql_real_escape_string($_GET['additional_notes']);
    
    // assemble query to pass to mysql_query()
    // no need for parentheses around the string; in fact i'm surprised that
    // didn't result in a parse error
    // also FYI re backticks, MySQL uses them to denote literal database/table/
    // column names -- they're optional unless required to disambiguate between
    // an entity name and a reserved word. for example, you can create a table
    // containing a column named 'key', which is a MySQL reserved word, but you
    // thereafter must refer to that column as `key`, with backticks, in any
    // queries, to hint to MySQL's parser that you mean the column by that name
    // and not the reserved word; otherwise, it's a parse error.
    $sql = "UPDATE `rmstable2` SET `additional_notes` = '$additional_notes' WHERE `id` = '$id'";
    
    // actually run the query
    // this being an UPDATE query, the result is boolean and offers no 
    // additional useful information, so you need not capture it in a variable; 
    // the 'or die' clause will fire if it's false, and if it's true, you'll 
    // use mysql_affected_rows() to get the additional info you need.
    mysql_query($sql)
      or die(mysql_error());
    
    // if the query failed, the script die()d on the previous line and didn't 
    // get here; if it did get here, you know the query succeeded
    $resultcount = mysql_affected_rows($dbConn);
    
    // this is technically correct but semantically odd; since you already included
    // the 'additional_notes' value in the previous UPDATE query, and since
    // that query certainly succeeded if we're evaluating this code at all, 
    // why run the same query again?
    if ($resultcount == 1) {
      mysql_query("UPDATE `rmstable2` SET `additional_notes` = '$additional_notes' WHERE `id` = '$id'") 
        or die(mysql_error());
    } 
    
    // again, the 'or die' clauses mean that we can only have reached this point
    // if the queries succeeded, so there's no need for an if() test here
    echo "Update Successful!";
    echo '<h3>Your case has been updated.</h3>'; 
    // note the backslashes before the embedded double quotes; single quotes in
    // tag attributes are technically invalid but most browsers will accept them,
    // but you can use double quotes within a double-quoted string if you precede
    // the embedded quotes with backslashes (called "escaping") to indicate that
    // they're not to be taken as the end of the string
    // (i.e., "\"\"" == '""')
    echo "To see your changes please click <a href=\"/fullcase.php?id=$id\">here</a></b>";
    ?>
    


    1. LD_DEBUG環境変数

    2. MySQLのサブクエリ内から親クエリフィールドを指定するにはどうすればよいですか?

    3. SQLServerでインポート/エクスポートウィザードを使用する方法-SQLServer/TSQLチュートリアルパート104

    4. SQLServerで文字列から時間データを抽出または変換する方法