我是PHP的新手,还有很长的路要走。可能是逻辑失败,或者我只是不知道PHP是如何工作的。 无论如何,我提交的代码来自我的管理控制面板。我正在尝试创建一个连接到db的页面,而不是显示所有数据库名称,并从单选按钮中选择其中一个。当再次按下提交以显示表格。显示表格后,下一步将是编辑,添加更新等等。我还没有。因为我无法使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
任何帮助将不胜感激。 P.S。:同样,当提交第一个表格时,第一个表格消失,第二个表格出现,依此类推。
<?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>";
}
?>
答案 0 :(得分: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"];
的变量不会正确地提取数据。
答案 1 :(得分: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扩展
好读
答案 2 :(得分: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