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. 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
Archived
This topic is now archived and is closed to further replies.