Скрипт для подсчета двух столбцов и результата эха

0

У меня есть рабочий SQL-запрос, который я пытаюсь использовать в небольшом PHP-скрипте, но получаю ошибку Parse, пробовал много вариантов. Надеюсь, ты поможешь. Конечный результат состоял бы в том, чтобы иметь две формы поля с "Датой" и "Каналом Нет", а затем дать результат подсчета количества строк "канала" для заданной даты. Извините довольно новый PHP/SQL, спасибо.

    <?php
// Connect to MSSQL and select the database
$link = mssql_connect('localhost', 'root', '', 'jm_db');
mssql_select_db('jm_db');

// Select all our records from a table

$mysql_query = mssql_query ('SELECT COUNT(*) FROM asterisk_cdr 
WHERE calldate LIKE '%2014-10-11%'
     AND channel LIKE '%SIP/4546975289%');

echo $sql;

?>

Я переделал код, но получаю "Warning: mysql_fetch_array() ожидает, что параметр 1 будет ресурсом" и неопределенной переменной.

<?php

// Create connection
$mysqli = new mysqli($localhost, $root, $jm_db);

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$sql = ("SELECT COUNT(*) FROM asterisk_cdr 
    WHERE calldate LIKE '%2014-10-11%'
    AND channel LIKE '%SIP/4546975289%'");

    $results= array();
while ($result = mysql_fetch_array($sql)) {
    $results[]= $result;
}

foreach($results as $result){
    echo $result['calldate'] . " " . $result['channel']; 
}

?>
Теги:
mysqli

4 ответа

2

Вам не хватает цитаты (выделение синтаксиса стека показывает вам), но ее следует заменить двойной двойной кавычкой и заканчивая тем же. Вы не можете использовать все одинарные кавычки.

Я заменил открытую одиночную цитату двойным, а также подходящую двойную цитату закрытия.

$mysql_query = mssql_query ("SELECT COUNT(*) FROM asterisk_cdr 
WHERE calldate LIKE '%2014-10-11%'
     AND channel LIKE '%SIP/4546975289%'");

В качестве побочного сигнала вы повторяете неправильную переменную.

Тем не менее, это не то, как вы могли бы отгонять результаты, но с циклом.

Что-то вроде, и заменив поле " Fieldname тем, которое вы хотите использовать:

while ($row = mssql_fetch_assoc($mysql_query)) {

    print $row['Fieldname'] . "\n";

}

или используйте mssql_fetch_array()

Вы также можете использовать:

$results= array();
while ($result = mssql_fetch_array($mysql_query)) {
    $results[]= $result;
}

foreach($results as $result){
    echo $result['calldate'] . " " . $result['channel']; 
}

Дополнительные сведения о функции Microsoft SQL Server см. В следующих разделах:

  • 0
    почему это всегда mssql_query?
  • 1
    @michael Похоже, что ОП использует php.net/manual/en/function.mssql-query.php mssql_query() является допустимым методом.
Показать ещё 2 комментария
0
    $mysqli = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$mysql_query = mysqli ("SELECT COUNT(*) FROM asterisk_cdr WHERE calldate LIKE '%2014-10-11%' AND channel LIKE '%SIP/4546975289%'");

while ($row = mysql_fetch_array($mysql_query, MYSQL_ASSOC)) {
   echo ($row["channel"]);
}
  • 0
    Фатальная ошибка для строки: $ mysql_query = mysqli
  • 0
    Неустранимая ошибка: вызов неопределенной функции mysqli (). Почему это не удается?
0
    $mysql_query = mssql_query ('SELECT COUNT(*) FROM asterisk_cdr 
    WHERE calldate LIKE '%2014-10-11%'
    AND channel LIKE '%SIP/4546975289%');

    while($row=mssql_fetch_array($mysql_query))
    {
    echo $row[0];
    }
  • 1
    Это вызовет синтаксическую ошибку. Вы проверяли это?
  • 0
    Я не могу пока немного позже, но я заметил, что Аашу поставил while ($ row = mssql_fetch_array ($ mysql_query)), что такое MsSQL? Моя ошибка с самого начала, поскольку я использую базу данных MySQL.
0

это простой пример с PDO

<?php
  try {
    $dns  = 'mysql:host=localhost;dbname=jm_db';
    $user = 'root';
    $pass = '';

    $options = array(
      PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    );
    $cnx = new PDO( $dns, $user, $pass, $options );
    $select = $cnx->query("SELECT COUNT(*) as count FROM asterisk_cdr WHERE calldate LIKE '%2014-10-11%' AND channel LIKE '%SIP/4546975289%'");

    $select->setFetchMode(PDO::FETCH_OBJ);

    while( $row = $select->fetch() )
    {
      echo '<h1>', $row->count , '</h1>';
    }
  } catch ( Exception $e ) {
    echo "Connect failed : ", $e->getMessage();
    die();
  }
  • 0
    А, подожди, mssql / mysql. Это была опечатка, я использую MySQL, так что это не так? Я знаю, но я новичок!
  • 0
    Я вставил сюда обновленный код с помощью SO, но все еще получаю предупреждения и сообщения об ошибках с помощью mssql_fetch_array.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню