Пользовательская функция Php для Mysql Query не работает - PullRequest
0 голосов
/ 16 января 2012

Я создал две функции: одну для подключения к базе данных MySQL и одну для выполнения определенного запроса.Я ввожу имя базы данных в качестве параметра для первой функции для подключения к базе данных, это прекрасно работает, но моя проблема со второй.Вторая функция возвращает $result от выполнения запроса, но когда я использую mysql_fetch_array с $result, она выдает один вывод, даже если предполагается, что он даст более одного.Поскольку я не эксперт php, поэтому я не могу найти решение.Пожалуйста, помогите мне.

Вот код:

Файл Function.php

<?php
function myconnect($data)
{
  $db_host='localhost';
  $db_user='root';
  $db_pwd='';
  $data=$data;
  $dbc = mysqli_connect($db_host, $db_user,$db_pwd,$data) or die (mysql_error());
  return $dbc;
}

function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier)
{
  $dbc=myconnect($db);
  $query="SELECT *FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC";
  $result = mysqli_query($dbc, $query);
  return $result;
}
?>

Файл test.php

<?php
  require_once('testfunc.php');
  $result= runquery('user','user_basic','user_type','1');
  //runquery('database','table','col','id')/
  while($row=mysqli_fetch_array($result))
  { 
    echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>';
  }
?>

Если я все делаю не так, то предложите мне лучший способ: -)

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Быстрый взгляд показывает, что в вашей функции runquery

SELECT *FROM

должно быть

SELECT * FROM

запишите пробел после *

EDIT: Я также заметил, что вы используете * mysqli_fetch_array *, и это недопустимый метод mysqli.Вы правы в использовании расширения mysqli над mysql, но вам нужно больше изучить извлечение оператора , чтобы решить эту проблему.Ссылка, которую я привел, дает процедурный пример, который должен работать для того, что вам нужно.

0 голосов
/ 17 января 2012
function myconnect($db)
{
    /*Removed redundant - single use variables*/

    /*DB name was passed to the client_flags parameter of mysql_connect instead of mysql_select_db*/
    $dbc = mysql_connect("localhost", "root","") or die (mysql_error());
    /*Inserted Line*/
    mysql_select_db($data);
    return $dbc;
}

В настоящее время вы не выбираете базу данных - эквивалент USE DATABASE db_name.

Пара изменений синтаксиса и определение функции

function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier)
{
    $dbc=myconnect($db);
    /*Query and link identifier were in the wrong order*/
    return mysql_query("SELECT * FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC", $doc);
}

Наконец, пара изменений синтаксиса, вызовы функций

require_once('testfunc.php');
$result= runquery('user','user_basic','user_type','1');
/*fetch associateive array of result during iteration*/
while($row=mysql_fetch_assoc($result))
{ 
    echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>';
}
...