Jump to content

PHP Warning: mysqli_num_rows() and Database Creation


MacConnolly

Recommended Posts

I am trying to use the following code to get information from a WooCommerce Wordpress Order, then pass the details to a database. The code that is supposed to execute this action is as follows:

 

    //Pass udid to database

    add_action('woocommerce_payment_complete', 'send_to_db');

 

    function send_to_db( $order_id ) {

$order = new WC_Order( $order_id ); 

$udid = $order->customer_note;

$email = $order->billing_email;

$db_hostname = 'MYIP';

$db_database = 'MYDATABASE';

$db_username = 'MYUSER';

$db_password = 'MYPASSWORD';

 

    // Connect to server.

    $link = mysqli_connect($db_hostname, $db_username, $db_password);

    if (!$link) {

    die('Not connected : ' . mysqli_error());

    }

 

    // Select the database. 

    $db_selected = mysqli_select_db($link, $db_database);

    if (!$db_selected) {

    die ('Can\'t use database : ' . mysqli_error());

    }

    //find package type

    $items = $order->get_items();

    foreach($items as $item) {

$type = '1';

    if(preg_match("/Basic/i", implode($item))) {

$type = '0';

}

 

    }

    //put it into the db

    $query= "INSERT INTO udid_orders (udid, email, type) VALUES ('$udid','$email','$type')";

    $sql = mysqli_query($link, $query);

    }

    mysqli_close($link);

    //end pass to db

 

 

After this code is executed, it should fill the database then another piece of helper PHP will get the information from the database. However **I have two issues**. The first issue, is that I don't think I created the database properly. I can successfully connect, but after an order is placed, the information is not stored in the database. To create the database, I followed just did a simple

    `CREATE DATABASE menagerie;` and created the database. I assumed the table and rows would create themselves after this code was executed. Please correct me if I'm wrong. My second issue is when I run the following helper code:

 

    <?php

    $x = '1';

    //include 'db.php';

    $db_hostname = 'MYIP';

    $db_database = 'MYDATABASE';

    $db_username = 'MYUSERNAME';

    $db_password = 'MYPASSWORD';

    

    // Connect to server.

    $link = mysqli_connect($db_hostname, $db_username, $db_password);

    if (!$link) {

        die('Not connected : ' . mysqli_error());

    }

    

    // Select the database. 

    $db_selected = mysqli_select_db($link, $db_database);

    if (!$db_selected) {

        die ('Can\'t use database : ' . mysqli_error());

    }

    

    //get udid from database

    while($x = '1'){

    $query = "SELECT id, udid, email, premium FROM udid_orders ORDER BY timestamp DESC LIMIT 1";

    $sql = mysqli_query($link, $query);

    if(mysqli_num_rows($sql) >= 1){

    echo 'registering';

    $row = mysqli_fetch_array($sql);

    $number = $row['id'];

    $udidsql = $row['udid'];

    $email = $row['email'];

    $is_premium = $row['premium'];

    $service_port = '622';

    $address = 'MYIPHERE';

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

    if ($socket === false) {

    echo 'Failed to create socket';

    return;

    }

    $result = socket_connect($socket, $address, $service_port);

      if ($result === false) {

      echo 'Failed to connect socket';

      return;

    }

   

    $in = "weTi3xJEy7kbldDYWdXe";

    $out = '';

    

    socket_write($socket, $in, strlen($in));

    while ($out = socket_read($socket, 1024)) {

       break;

    }

   

    //get us a random number for the name 

    $request = 'OrderInfo ';

    //$random = rand(1, 2000);

    //name that nigga

    $name = $number;

    $request .= $name;

    $request .= " ";

    //$request .= $order->billing_email;

    $request .= $email;

    $request .= " ";

    //$is_premium = '1';

    // if(preg_match("/Bronze/i", implode($item))) {

    // $is_premium = '0';

    // }

    // $request .= $is_premium;

    //}

    $request .= $is_premium;

    $out = '';

    socket_write($socket, $request, strlen($request)); 

    while($out = socket_read($socket, 1024)) {

    break;

    }

    $udids = explode(',', $udidsql);

    foreach($udids as $udid){

    $udid_request = "UdidRegister ";

    

    $udid = $udidsql;

    

    $udid_request .= $udid;

   

    $udid_status = "";

    socket_write($socket, $udid_request, strlen($udid_request));

    }

    socket_close($socket);

    

    $update = "UPDATE udid_orders SET status='1' WHERE udid='$udidsql'";

    $sql_update = mysqli_query($link, $update);

   

      }

    

   

    else{

    echo 'sleeping';

    sleep(5);

    }

    

    }

    // close mysql

    mysqli_close($link);

    ?>

 

 

I get the following error `PHP Warning:  mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /link.php on line 25. I have no idea what is even means, let alone how to troubleshoot it. 

 

I am pretty new to both PHP and MySQL, so any pointers in the right direction would be really helpful.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.