2014-11-05 49 views
0

我有一個工作的SQL查詢,我試圖在一個小的PHP腳本中使用,但得到分析錯誤,嘗試了很多變化。希望你能幫助。最終結果將是具有'日期'和'頻道號'的兩個字段形式,然後給出給定日期的'頻道'行數量的結果計數。對不起相當新的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; 

?> 

我已經重新做了代碼,但得到「警告: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']; 
} 

?> 
+1

旁註:你使用了錯誤的變量來呼應這應該是'$ mysql_query'而不是'$ sql' - 你還缺少引用。 '(「SELECT COUNT(*)FROM asterisk_cdr WHERE calldate LIKE'%2014-10-11%' AND channel LIKE'%SIP/4546975289%'」)'試試看,這可能會修復你的代碼。 – 2014-11-05 17:57:37

+0

您的'$ mysql_query'變量具有不匹配的單引號(''')。 – esqew 2014-11-05 18:03:51

+1

你使用的是MySQL還是Microsoft SQL Server? – 2014-11-05 18:42:09

回答

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,所以這是錯的?我知道,biut我是新手! – shmideo 2014-11-05 18:34:27

+0

我在這裏粘貼了更新後的代碼,但仍然收到了警告和錯誤'mssql_fetch_array'。 – shmideo 2014-11-06 09:38:43

+0

只有一個錯誤。致命錯誤:調用未定義函數mysqli()。 – shmideo 2014-11-06 12:41:39

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? – baao 2014-11-05 18:10:44

+1

@michael似乎是OP使用的是什麼http://php.net/manual/en/function.mssql-query.php'mssql_query()'是一種有效的方法。 – 2014-11-05 18:11:33

+0

乾杯!因爲$ mysql和mssql_ – baao 2014-11-05 18:12:36

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

這將引發語法錯誤。你測試過了嗎? – 2014-11-05 18:55:10

+0

我遲到了一段時間,但是我注意到Aashu放在while($ row = mssql_fetch_array($ mysql_query)),這是MsSQL?從一開始就是我使用MySQL數據庫的錯誤。 – shmideo 2014-11-06 10:35:15

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 – shmideo 2014-11-06 12:49:18

+0

致命錯誤:調用未定義的函數mysqli()。爲什麼這是失敗的? – shmideo 2014-11-06 18:38:07