mysql数据库选择中的PHP错误
我用PHP编写了一段代码来连接Mysql数据库并向其中添加数据。。代码如下:mysql数据库选择中的PHP错误,php,mysqli,Php,Mysqli,我用PHP编写了一段代码来连接Mysql数据库并向其中添加数据。。代码如下: $dbhostname = "localhost"; $dbusername = "root"; $dbpassword = "root"; $dbname = "rms_invoice"; function showDBMessage(){ if($_POST["name"] != NULL){ //came from register page if(register())
$dbhostname = "localhost";
$dbusername = "root";
$dbpassword = "root";
$dbname = "rms_invoice";
function showDBMessage(){
if($_POST["name"] != NULL){
//came from register page
if(register()){
print("<br/>Registered successfully!!!");
} else {
print("<br/>Registration failed!!!");
}
}
}
function register(){
global $dbhostname,$dbusername,$dbpassword,$dbname;
// Create connection
$con=mysqli_connect($dbhostname,$dbusername,$dbpassword);
// Check connection
if (!mysqli_connect_errno()) {
print("MYSQL Connection established...<br/>");
echo "<br/>Successful: ".mysqli_get_host_info($con);
$selected = mysqli_select_db($con, $dbname);
if(false!==$selected){
$name = mysqli_real_escape_string($con, $_POST["name"]);
$username = mysqli_real_escape_string($con, $_POST["username"]);
$password = mysqli_real_escape_string($con, $_POST["password"]);
$address = mysqli_real_escape_string($con, $_POST["address"]);
$insertUserQuery="INSERT INTO USER(name,username,password,address) VALUES ('$name','$username','$password','$address')";
echo $insertUserQuery;
$result = mysqli_query($con, $insertUserQuery);
if ( false===$result ) {
printf("<br/>mysqli_connect_error: %s\n", mysqli_connect_error());
printf("<br/>mysqli_error: %s\n", mysqli_error($con));
} else {
echo "<h4>New User Added!!!</h4><br/>";
return true;
}
}else{
printf("<br/>Error while selecting database, error:%s\n",mysqli_errno($con));
}
} else {
print("<br/>Failed to connect to MySQL: "+mysqli_connect_error());
}
mysqli_close($con);
return false;
}
它正在连接,但数据库选择似乎有问题。(通过mysql cli
成功执行相同的查询)
我在上面讨论的代码中尝试了许多可能的更正,但都没有成功
有人能帮我找出错误吗
if(false!==!$selected){
是非常不寻常的运算符(称为“双负”),表示仅当$selected为FALSE时,才希望执行以下代码块。
为了让它不那么令人困惑,写它时不要唱这些神奇的圣歌
if($selected){
甚至可以完全忽略这个无用的检查。为了确保“rms\U发票”是正确的数据库名称,对吗?请阅读此-。将值直接注入SQL语句是不安全的嗯,我同意double NOT是一个非常奇怪的说法,但实际上如果执行
块,那么这本身就不是完整的答案,也许您应该解决更多问题。@ICanHasCheezburger如果执行块是因为$selected
是FALSE
意思是mysqli\u select\u db
失败,则执行。这个答案完全正确。。这实际上是疏忽造成的错误。。。我发现它是if(false!==$selected)
或if(true===!$selected)
…但现在错误是<代码>MYSQL连接已建立。。。成功:通过TCP/IP的本地主机。。。选择数据库时出错,错误:1046。。。注册失败代码>这是非常明显和自我解释的一个
if($selected){