2016-07-06 4 views
0

J'ai écrit une classe de base de données que j'utilise souvent et j'ai utilisé mysqli.J'ai voulu l'écrire avec PDO mais c'était lent (Il ne s'agit pas de connexion ip :)), et mon site est vraiment énorme . cette petite lenteur pdo sera vraiment gros problème, c'est pourquoi je choosed voie difficile --Mysqli - j'ai écrit une classe dynamique qui se lient params dynamicly et facilement l'utilisation comme ceci:Mysqli dynamic query bind_results

DB::getInstance()->query(sql,'ss',array($a,$b)); 

C'était jusqu'à ce vraiment utile aujourd'hui Je voulais obtenir des résultats et aussi compter les valeurs mais je découvre un gros problème quand j'utilise num_rows mysqli get_result ne fonctionne pas, Quand j'utilise get_result num les lignes ne marcheront jamais, aussi quand j'utilise get_result et si je veux l'utiliser à nouveau pour la même requête deuxième wil Je ne travaille pas .Also get_result n'est pas une bonne fonction car elle ne supporte que mysqlid.Puis j'ai essayé de lier le résultat qui est inutile car chaque requête select je devrais écrire bind_result (params) ce qui n'est pas bon pour d'autres développeurs sur company.What Pdo est lent et pour mon site il est vraiment lent, mysqli n'est pas pour les développeurs il augmente le temps de développement.Comment puis-je lier les résultats de façon dynamique pour la requête? Je veux quelque chose comme je vais écrire sql dinamicly lier les aoutomaticly et puis j'écrirai fetch() et j'écrirai des noms de colonne et j'obtiendrai le résultat. Comment est-ce que je peux faire cela?

Répondre

0

Lorsque j'utilise des lignes de get_result num ne marchera jamais

ce n'est pas vrai
en plus, vous ne avez besoin de lignes num de toute façon

quand j'utilise get_result et si je veux utilisez-le à nouveau pour la même requête

vous ne le voulez pas

get_result n'est pas bonne fonction, car il ne supporte que mysqlid

cela est vrai
cependant, si votre site est si grand et distinct, il n'y a pas de problème pour installer un module requis ou deux.

Comment lier les résultats de manière dynamique pour une requête?

utilisez get_result.

Pour réutiliser un résultat obtenir toutes les lignes dans un tableau à l'aide fetch_all(), puis utiliser ce tableau où vous souhaitez

Au lieu de num_rows uniquement les données aller chercher et voir si quelque chose a été tiré par les cheveux ou non.

+0

merci pour votre réponse.Ok j'ai utilisé à nouveau get_result et cela a bien fonctionné mais le problème est qu'il y a deux classe et dans le premier je devrais y at-il résultat ou pas (Ok je peux le faire avec fetch) et puis Est-ce qu'il devrait retourner aller chercher tous à la seconde one.Comment puis-je obtenir cela en utilisant une seule méthode de récupération? Aussi quand je veux retourner chercher tableau, alors j'essaye de while ($ a = $ b) ça ne marche pas et est devenu sans fin loop ($ b est une variable qui contient return fetch_all()) – Alex

+0

bien, le résultat unique est un sous-ensemble d'un résultat multiple. vous pouvez toujours aller chercher toutes les lignes et ensuite prendre la première si vous n'en avez besoin que d'une seule. mais je suggère fortement d'avoir des fonctions dédiées pour obtenir différents types de résultats.il suffit de regarder pdo, il y a fetchColumn(), fetch() et fetchAll() –

+0

Comme vous le dites, pourquoi je n'ai pas besoin de num_rows? N'est-ce pas rapide que fetch_all? Il y a aussi un problème avec le résultat de checkiing avec fetch_all parce que quand j'écris if ($ get_res-> fetch_all) il retourne toujours false; .Mais aussi quand j'utilise num_rows avec get_result ça ne marche pas.Comment puis-je vérifier: y a-t-il des résultats avec manière rapide? – Alex