Соединение и запрос mysqli

Я новичок в mysqli и проходил учебное пособие: http://www.binpress.com/tutorial/using-php-with-mysql-the-right-way/17#comment1

Мне удалось подключиться к моей базе данных, используя это:

$config = parse_ini_file('../config.ini'); $connection = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']); if($connection === false) { die('Connection failed [' . $db->connect_error . ']'); } echo("hello"); //this worked! 

Но потом я попробовал обернуть его в функцию (как обсуждалось в учебнике) … Я видел, что вы вызываете функцию соединения из другой функции … в учебнике каждая функция продолжает получать вызов от другого и другого … и я никогда не было найдено, где начался начальный вызов, чтобы получить эффект домино от функций, вызывающих друг друга. Так или иначе, я попытался остановить его на двоих, чтобы просто проверить и научить себя .. но он не работает, и я не знаю, почему:

 function db_connect() { static $connection; if(!isset($connection)) { $config = parse_ini_file('../config.ini'); $connection = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']); } if($connection === false) { return mysqli_connect_error(); } return $connection; echo("hello2"); } function db_query($query) { $connection = db_connect(); $result = mysqli_query($connection,$query); return $result; echo("hello1"); } db_query("SELECT `Q1_Q`,`Q1_AnsA` FROM `Game1_RollarCoaster`"); //this didn't work :( 

Solutions Collecting From Web of "Соединение и запрос mysqli"

Вот простое решение mysqli для вас:

 $db = new mysqli('localhost','user','password','database'); $resource = $db->query('SELECT field FROM table WHERE 1'); $row = $resource->fetch_assoc(); echo "{$row['field']}"; $resource->free(); $db->close(); 

Если вы хватаете несколько строк, я делаю это так:

 $db = new mysqli('localhost','user','password','database'); $resource = $db->query('SELECT field FROM table WHERE 1'); while ( $row = $resource->fetch_assoc() ) { echo "{$row['field']}"; } $resource->free(); $db->close(); 

С обработкой ошибок: если есть фатальная ошибка, скрипт завершится с сообщением об ошибке.

 // ini_set('display_errors',1); // Uncomment to show errors to the end user. if ( $db->connect_errno ) die("Database Connection Failed: ".$db->connect_error); $db = new mysqli('localhost','user','password','database'); $resource = $db->query('SELECT field FROM table WHERE 1'); if ( !$resource ) die('Database Error: '.$db->error); while ( $row = $resource->fetch_assoc() ) { echo "{$row['field']}"; } $resource->free(); $db->close(); 

С обработкой исключений try / catch: Это позволяет вам обрабатывать любые ошибки в одном месте и, возможно, продолжать выполнение, если что-то не удается, если это необходимо.

 try { if ( $db->connect_errno ) throw new Exception("Connection Failed: ".$db->connect_error); $db = new mysqli('localhost','user','password','database'); $resource = $db->query('SELECT field FROM table WHERE 1'); if ( !$resource ) throw new Exception($db->error); while ( $row = $resource->fetch_assoc() ) { echo "{$row['field']}"; } $resource->free(); $db->close(); } catch (Exception $e) { echo "DB Exception: ",$e->getMessage(),"\n"; } 

Ну, я закончил тем, что не использовал функции и сделал код очень простым (придерживаясь процедурного, а не ООП, хотя многие учебники используют ООП – считалось, что лучше начать этот путь):

 <?php $config = parse_ini_file('../config.ini'); $link = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']); if(mysqli_connect_errno()){ echo mysqli_connect_error(); } $query = "SELECT * FROM Game1_RollarCoaster"; $result = mysqli_query($link, $query); while ($row = mysqli_fetch_array($result)) { echo $row[Q1_Q] . '<-- Here is your question! ' . $row[Q1_AnsA] . '<-- Here is your answer! '; echo '<br />'; } mysqli_free_result($result); mysqli_close($link); ?>