致命错误:在php中的非对象上调用成员函数fetch_assoc()

时间:2018-04-12 17:41:05

标签: php mysqli

我在fetch_assoc()时遇到错误。 getTokenByEmail是一个返回令牌的方法。


DELIMITER $$
USE `temp` $$
DROP PROCEDURE IF EXISTS `GenerateUniqueValue`$$

CREATE PROCEDURE `GenerateUniqueValue`(IN tableName VARCHAR(255),IN columnName VARCHAR(255))
BEGIN
    DECLARE uniqueValue VARCHAR(8) DEFAULT "";
    DECLARE newUniqueValue VARCHAR(8) DEFAULT "";
    WHILE LENGTH(uniqueValue) = 0 DO
        SELECT CONCAT(SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1),
                SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1),
                SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1),
                SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1),
                SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1),
                SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1),
                SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1),
                SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', RAND()*34+1, 1)
                ) INTO @newUniqueValue;
        SET @rcount = -1;
        SET @query=CONCAT('SELECT COUNT(*) INTO @rcount FROM  ',tableName,' WHERE ',columnName,'  like ''',@newUniqueValue,'''');
        PREPARE stmt FROM  @query;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    IF @rcount = 0 THEN
            SET @query=CONCAT('insert into  ',tableName,' ( ',columnName,' ) values (''',@newUniqueValue,''')');
            PREPARE stmt FROM  @query;
         EXECUTE stmt;
         DEALLOCATE PREPARE stmt;
            SET uniqueValue = @newUniqueValue ;
        END IF ;
    END WHILE ;
SELECT @query;
    END

这是函数getTokenByEmail()。

<?php 
require_once 'DbOperation.php';
$db = new DbOperation();
$devices = $db->getTokenByEmail($_POST['u_code']);

$response = array(); 
$response['error'] = false; 
$response['devices'] = array(); 

while($device = $devices->fetch_assoc()){
$temp = array();
$temp['u_code']=$device['u_code'];
$temp['token']=$device['token'];
array_push($response['devices'],$temp);    
}

echo json_encode($response);
?>

0 个答案:

没有答案