MacConnolly Posted March 27, 2014 Share Posted March 27, 2014 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. Quote Link to comment https://forums.phpfreaks.com/topic/287321-php-warning-mysqli_num_rows-and-database-creation/ Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.