我有一个返回字符串的函数(带有数据库凭据),这个名为package joenio.sirname;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
public class SirName_launcher extends Game{
public static Button button_start;
public static CheckBox checkBox_1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sir_name_launcher);
StartButton();
}
public void StartButton(){
button_start = (Button) findViewById(R.id.button_start);
checkBox_1 = (CheckBox) findViewById(R.id.checkBox_1);
button_start.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent("joenio.sirname.Game");
startActivity(intent1);
}
}
);
}
public void Switching(){
checkBox_1 = (CheckBox) findViewById(R.id.checkBox_1);
checkBox_1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
textView_x.setVisibility(View.VISIBLE);
}
}
}
);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_settings, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
的字符串是这样的:
$conn_db
现在在我的函数中建立数据库连接,如果我传递这样的值:
host= localhost ;username= root ;password= 123456 ;database= test ;
一切顺利,但是。如果我只传递连接字符串:
mysqli_connect($host, $username, $password, $dbname)
在:
中返回一个异常mysqli_connect($conn_db)
是不是可以在if (mysqli_connect_errno())
{
throw new Exception("Can't establish db connection");
}
中使用连接字符串而不是4个变量?
答案 0 :(得分:2)
不可能。 mysqli_connect()
期望多个参数。执行mysqli_connect($db_conn)
时,您将传递 ONE 参数。 mysqli库和底层的mysql驱动程序不会解析该字符串以尝试提取任何其他必要的参数。你不能在一个参数中嵌入多个值,并希望这是有意义的。
由于您只提供$db_conn
,这将是MySQL将尝试用作主机名(参数#1),并尝试对某些荒谬的“username = foo& password = bar”进行DNS查找主机名,显然会失败。
如果要使用单个字符串/参数,请切换到PDO。它的构造函数允许这样的事情。