Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql数据库选择中的PHP错误_Php_Mysqli - Fatal编程技术网

mysql数据库选择中的PHP错误

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())

我用PHP编写了一段代码来连接Mysql数据库并向其中添加数据。。代码如下:

$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){