2

私はPHPにかなり慣れていないので、まだ長い道のりがあります。おそらく、それは論理的な失敗であるか、PHP がどのように機能するかを正確に知らないだけかもしれません。とにかく、私が提出したコードは私の管理コントロールパネルからのものです。すべてのデータベース名を表示し、ラジオボタンからいずれかを選択するよりも、データベースに接続するページを作成しようとしています。テーブルを表示するためにもう一度送信を押すと、テーブルを表示した後、次のステップは編集、追加、更新などです。私はまだそこにいません。mysql_select_db を機能させることができなかったからです。エラーが発生します。エラーは次のとおりです。

注意: 未定義の変数: 94 行目の /public_html/php/insert_delete_update_amend/mydata03.php に接続します

警告: mysql_select_db(): 指定された引数は、94 行目の /public_html/php/insert_delete_update_amend/mydata03.php の有効な MySQL-Link リソースではありません db に接続できませんでした

どんな助けでも大歓迎です。PS: また、最初のフォームが送信されると、最初のフォームが消え、2 番目のフォームが表示されます。

<?php 
// form variables
$DisplayDBinfoForm = true;
$DisplayDBform = false;
if (isset($_POST['db_info_submit'])) { //when user presses db info submit button
//select which form to hide or appear   
$DisplayDBinfoForm = false;
$DisplayDBform = true;

$hostname = $_POST['db_name'];
$db_user_name = $_POST['db_user_name']; 
$db_user_password = $_POST['db_user_password']; 

$connect = mysql_connect($hostname,$db_user_name,$db_user_password);
if(!$connect) die("Could not connect");
    echo "<p><b>connected successfully</b></p>\n";
    }
    
if($DisplayDBinfoForm) {        
 ?>
<form name="dbinfo" method="POST" action="mydata03.php" onsubmit="return         validateForm();">

Host Name:          <input type="text" name="db_name" /><br />
<br />
DB User Name        <input type="text" name="db_user_name" /><br />
<br />
DB User Password:   <input type="text" name="db_user_password" /><br />
<br />
<input type="submit" name="db_info_submit"value="Login"><br />
</form>
<?php
}
if($DisplayDBform) {
?>
<form name="delete_table" id="delete_table" action="mydata03.php" method="post">
    <table width="30%" border="1">
    <tbody>

<?php
$query = "SHOW DATABASES";
$resultSet = mysql_query($query);
while($database = mysql_fetch_array($resultSet)) { // go through each row that was     returned in $result
$dbname = $database[0];

echo "<tr><th>Database Name</th>
            <th>Select</th>
        </tr>
        <tr>
            <td>$dbname</td>
            <td><input name=\"radDB\" id=\"radDB\" type=\"radio\" value=\"$dbname\"</td>
        </tr>\n";
}

?>

        </tbody>
        </table>
<p>
<input name="btnSelectDB" type="submit" value="Select" />
</form>
</p>
<?php
}
if(isset($_POST['btnSelectDB'])) {

$DisplayDBinfoForm = false; // hide form
$DisplayDBform = false; // hide form

$db_name = $_REQUEST["radDB"]; // the db na,e

echo "The " . $db_name . " is selected\n";  
$select_db = mysql_select_db($db_name,$connect);
if(!$select_db) die("Could not connect to db". mysql_error());
    echo "<b>connected successfully to db</b>";
}
?>
4

3 に答える 3

2

まず、mysql_* 関数を使用しないでください。その時は過ぎました。代わりに、mysqli_*またはPDOを使用してください。

そうは言っても、データベースサーバーへの最初の接続は正常に完了しているように見えます.

$connect = mysql_connect($hostname,$db_user_name,$db_user_password);
if(!$connect) die("Could not connect");

後の段階ですが、実際のデータベースに接続しようとすると、接続されます$select_db = mysql_select_db($db_name,$connect);

$db_name = $_REQUEST["radDB"];これにより、データベース名を設定した変数がデータを正しく取り込んでいないと思われます。

于 2012-11-20T03:16:14.720 に答える
1

試す

$connect = mysql_connect($hostname,$db_user_name,$db_user_password) or die("Could not connect");

if( $connect) 
    echo "<p><b>connected successfully</b></p>\n";
    }

また、

if(  isset($_POST['db_name'] ) &&  isset($_POST['db_user_name']) && isset($_POST['db_user_password']){
     $hostname = $_POST['db_name'];
     $db_user_name = $_POST['db_user_name']; 
     $db_user_password = $_POST['db_user_password']; 

}

この拡張 (MYSQL_*) の使用は推奨されません。代わりに、MySQLi または PDO_MySQL エクステンションを使用する必要があります

よく読んだ

MySQL 開発者向け PDO チュートリアル

于 2012-11-20T03:14:47.643 に答える
0

問題は、「db_info_submit」で投稿した場合にのみデータベースが開かれる ($connect=) ことですが、「btnSelectDB」で投稿した場合でも 94 行目を実行できます。

最も簡単な解決策は、以下で必要になる場合に備えて、上部の if ($_POST) ステートメントの外側でデータベースを開くことです。または、それを開くために必要な条件のいずれかでラップします (以下に示すコード)

<?php 
// form variables
$DisplayDBinfoForm = true;
$DisplayDBform = false;
if (isset($_POST['db_info_submit']) || isset($_POST['btnSelectDB'])) {
    $connect = mysql_connect($hostname,$db_user_name,$db_user_password);
    if(!$connect) die("Could not connect");
  echo "<p><b>connected successfully</b></p>\n";
    }
}

if (isset($_POST['db_info_submit'])) { //when user presses db info submit button
    //select which form to hide or appear   
    $DisplayDBinfoForm = false;
    $DisplayDBform = true;

    $hostname = $_POST['db_name'];
    $db_user_name = $_POST['db_user_name']; 
    $db_user_password = $_POST['db_user_password']; 
}

if($DisplayDBinfoForm) {
?>

....

<?php
}
if(isset($_POST['btnSelectDB'])) {

    $DisplayDBinfoForm = false; // hide form
    $DisplayDBform = false; // hide form

    $db_name = $_REQUEST["radDB"]; // the db na,e

    echo "The " . $db_name . " is selected\n";  
    $select_db = mysql_select_db($db_name,$connect);
    if(!$select_db) die("Could not connect to db". mysql_error());
        echo "<b>connected successfully to db</b>";

}
?>

これは直接的な答えではありませんが、最も役立つ答えです。

スクリプトに "myslq_" で始まる関数がある場合 (1 - mysql_real_esacape_string を除く)、古い例に従っており、減価償却されるコードを使用しています。PHP と MySQL を学習しているだけなので、mysqli_またはPDOのいずれかの最新の関数を使用する習慣を身につけてください。

于 2012-11-20T03:17:26.373 に答える