2014-11-05 3 views
0

작은 PHP 스크립트에서 사용하려고하는 작업 SQL 쿼리가 있지만 구문 분석 오류가 발생하여 많은 변형을 시도했습니다. 당신이 도울 수 있기를 바랍니다. 최종 결과는 '날짜'와 '채널 번호'가있는 두 개의 필드 형식을 가지며 주어진 날짜에 대한 '채널'행 수의 결과 개수를 제공합니다. 죄송합니다 상당히 새로운 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_ASSOC은() 매개 변수 (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'있어 - 당신은 또한이 누락 인용문. '(% CODE (*) from asterisk_cdr '% 2014-10-11 %' 채널 AND LIKE '% SIP/4546975289 %' ") 호출하여 코드를 수정할 수 있습니다. –

+0

'$ mysql_query' 변수에 작은 따옴표 (''')가 있습니다. – esqew

+1

MySQL 또는 Microsoft SQL Server를 사용하고 있습니까? –

답변

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

Ah hold on, mssql/mysql. 이것은 오타였습니다. 저는 MySQL을 사용하고 있습니다. 그래서 잘못 됐습니까? 나는 알고있다, 나는 새내기이다! – shmideo

+0

나는 여기서부터 도움을 받아 업데이트 된 코드를 붙여 넣었지만 여전히 'mssql_fetch_array'로 경고와 오류를 얻었습니다. – shmideo

+0

오류가 하나 있습니다. 치명적인 오류 : 정의되지 않은 함수 mysqli()를 호출하십시오. – shmideo

2

당신은 견적 (스택의 구문 강조는 방법을 보여줍니다) 놓치고있어, 아직가 개방 따옴표로 대체해야하고 동일로 끝나는입니다 . 모든 작은 따옴표는 사용할 수 없습니다.

여는 작은 따옴표를 이중으로 바꾸고 큰 따옴표로 닫습니다.

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

잘못된 변수가 표시됩니다.

그러나 결과는 반복되는 것이 아니라 반복됩니다.

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']; 
} 

사용하려는 하나 Fieldname 교체

뭔가 등을들 수 있으며, Microsoft SQL Server의 기능에서 다음을 참조하십시오.

+0

왜 항상 mssql_query입니까? – baao

+1

@michael OP가 사용하는 것으로 보입니다 http://php.net/manual/en/function.mssql-query.php'mssql_query()'는 유효한 메소드입니다. –

+0

건배! $ mysql 및 mssql_ – baao

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

잠시 후까지 기다릴 수 없지만 Aashu ($ row = mssql_fetch_array ($ mysql_query))는 MsSQL입니까? MySQL 데이터베이스를 사용하면서 시작부터 내 잘못. – shmideo

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

+0

치명적인 오류 : 정의되지 않은 함수 mysqli()를 호출하십시오. 이것이 실패한 이유는 무엇입니까? – shmideo

관련 문제