Je travaillais sur l'API Keith Palmer Quickbooks PHP. Tout fonctionne bien et se connecte. Les requêtes d'exemple renvoient le résultat dans des tableaux. Ce que je voulais faire est d'exécuter une instruction d'insertion mysqli qui s'exécuterait dans le tableau des résultats et enregistrerait les enregistrements dans la table mysqli.Erreur fatale: Appel à une fonction membre getFreeFormNumber() sur null dans C: qbapi quickbooks-php-master docs
Voici mon code qui récupère les enregistrements de Quickbooks et les enregistre dans la table mysqli. ?
$customers = $CustomerService->query($Context, $realm, "SELECT * FROM Customer");
foreach ($customers as $Customer)
{
//First, we will retrieve the ID, and strip out any spaces/characters.
$id = $Customer->getId();
$str = preg_replace("/[^0-9]/","",$id);
//Insert customer into customer tables.
$sql = "INSERT INTO Customers (CustomerID__kp, CustomerName, CustomerAddress1, CustomerCity, CustomerCounty, CustomerPostcode, CustomerTelephone)
VALUES ('".$str."',
'".$Customer->getFullyQualifiedName()."',
'".$Customer->getBillAddr(0)->getLine1()."',
'".$Customer->getBillAddr(0)->getCity()."',
'".$Customer->getBillAddr(0)->getCountrySubDivisionCode()."',
'".$Customer->getBillAddr(0)->getPostalCode()."',
'".$Customer->getPrimaryPhone(0)->getFreeFormNumber()."'
)
ON DUPLICATE KEY
UPDATE CustomerName = '".$Customer->getFullyQualifiedName()."',
CustomerAddress1 = '".$Customer->getBillAddr(0)->getLine1()."',
CustomerCity = '".$Customer->getBillAddr(0)->getCity()."',
CustomerCounty = '".$Customer->getBillAddr(0)->getCountrySubDivisionCode()."',
CustomerPostcode = '".$Customer->getBillAddr(0)->getPostalCode()."',
CustomerTelephone = '".$Customer->getPrimaryPhone(0)->getFreeFormNumber()."'
";
$conn->query($sql);
}
>
Ma question est que je reçois cette erreur:
Fatal error: Call to a member function getFreeFormNumber() on null in C:\qbapi\quickbooks-php-master\docs\
Quand je lance les requêtes des clients, le code obtient les clients enregistrés dans mes QuickBooks et sauve dans mon mysqli. Mais pour une raison quelconque, je reçois l'erreur ci-dessus.
'$ Customer-> getPrimaryPhone (0)' est vide ou NULL, vous devez corriger cela. –
[Little Bobby] (http://bobby-tables.com/) dit *** [votre script est à risque pour les attaques par injection SQL.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-en-php) ***. Même [échapper la chaîne] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) n'est pas sûr! –
Lorsque je reçois les enregistrements des quickbooks, tous n'ont pas de numéro de téléphone enregistré. Il y a donc des enregistrements avec des numéros de téléphones et d'autres non. Dans foreach loop ** $ Customer-> getPrimaryPhone (0) ** peut par null pour les enregistrements qui n'ont pas de numéro de contact mais cela fonctionnera si le numéro de contact. Je veux toujours enregistrer les enregistrements néanmoins les enregistrements ont le numéro de contact ou pas. Merci. –