用字符串连接到mysqli?

时间:2016-02-11 16:16:16

标签: php mysqli

我有一个返回字符串的函数(带有数据库凭据),这个名为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个变量?

1 个答案:

答案 0 :(得分:2)

不可能。 mysqli_connect()期望多个参数。执行mysqli_connect($db_conn)时,您将传递 ONE 参数。 mysqli库和底层的mysql驱动程序不会解析该字符串以尝试提取任何其他必要的参数。你不能在一个参数中嵌入多个值,并希望这是有意义的。

由于您只提供$db_conn,这将是MySQL将尝试用作主机名(参数#1),并尝试对某些荒谬的“username = foo& password = bar”进行DNS查找主机名,显然会失败。

如果要使用单个字符串/参数,请切换到PDO。它的构造函数允许这样的事情。