Access X-Cart Data in PHP through Connect Cloud

Ready to get started?

Learn more or sign up for a free trial:

CData Connect



Connect to X-Cart through the standard MySQL libraries in PHP.

You can use CData Connect Cloud to access X-Cart data from MySQL clients, without needing to perform an ETL or cache data. Follow the steps below to create a virtual MySQL database for X-Cart and connect to X-Cart data in real time through PHP's standard MySQL interfaces, mysqli and PDO_MySQL.

CData Connect Cloud provides a pure MySQL, cloud-to-cloud interface for X-Cart, allowing you to easily query live X-Cart data in PHP — without replicating the data to a natively supported database. As you query data in PHP, CData Connect Cloud pushes all supported SQL operations (filters, JOINs, etc) directly to X-Cart, leveraging server-side processing to quickly return X-Cart data.

Create a Virtual MySQL Database for X-Cart Data

CData Connect Cloud uses a straightforward, point-and-click interface to connect to data sources and generate APIs.

  1. Login to Connect Cloud and click Databases.
  2. Select "X-Cart" from Available Data Sources.
  3. Enter the necessary authentication properties to connect to X-Cart.

    An API Key must be created for your XCart Installation. In order to obtain the API Key, you need to install and configure the REST API Module for your X-Cart installation.

    • Login to your X-Cart Installation. Click on My addons on the bottom of the left side-bar navigation panel.
    • Search for REST API Module. Install the Module.
    • After the module has been installed, you need to set it up.
      • Go to the Settings section for the REST API Module.
      • On the settings page specify the API Key (only read)
    • Set the ApiKey and Url to the connection property to connect to data.
  4. Click Test Database.
  5. Click Privileges -> Add and add the new user (or an existing user) with the appropriate permissions.

With the virtual database created, you are ready to connect to X-Cart data from any MySQL client.

Connect in PHP

The following examples show how to use object-oriented interfaces to connect and execute queries. Initialize the connection object with the following parameters to connect to the virtual MySQL database:

  • Host: Specify the remote host location where the service is running. In this case "myinstance.cdatacloud.net" is used for the remote host setting since the service is running on the local machine.
  • Username: Specify the username for a user you authorized in Connect Cloud.
  • Password: Specify the password for the authorized user account.
  • Database Name: Specify the name of the virtual database you created for X-Cart.
  • Port: Specify the port the service is running on, port 3306 in this example.

mysqli

<?php
$mysqli = mysqli_init();

$mysqli->ssl_set("C:/certs/cloudclient.key",
                 "C:/certs/cloudclient.pem",
                 "C:/certs/myCA.pem",
                 NULL,NULL);

$mysqli->real_connect("mysintance.cdatacloud.net", "admin", "mypassword", "xcartdb",3306,NULL,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
?>

PDO

<?php
$pdo = new PDO('mysql:host=myinstance.cdatacloud.net;dbname=xcartdb;port=3306;','admin', 'mypassword', array(
    PDO::MYSQL_ATTR_SSL_KEY                => 'C:/certs/cloudclient.key',
    PDO::MYSQL_ATTR_SSL_CERT               => 'C:/certs/cloudclient.pem',
    PDO::MYSQL_ATTR_SSL_CA                 => 'C:/certs/myCA.pem',
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    )
);
?>

Query in PHP

With the connection established, you can then access tables. The following steps walk through the example:

  1. Query the table; for example, PROFILES. The results will be stored as an associative array in the $result object.
  2. Iterate over each row and column, printing the values to display in the PHP page.
  3. Close the connection.

mysqli

$result = $mysqli->query("SELECT ProfileId, FirstName FROM PROFILES WHERE Language = 'en'");
while($row = $result->fetch_assoc()) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$mysqli->close();

PDO

$result = $pdo->query("SELECT ProfileId, FirstName FROM PROFILES WHERE Language = 'en'");
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$result = null;
$pdo = null;