Glad to hear you fixed it. Not quite sure what happened. This shouldn't happen so obviously something went wrong. But, even though this seems a bit draconian, what you've done should be ok if this ever happens again.
QBSync has a matching feature, so as long as you don't change the item, customer, and order number/names in QB, you should be able to rematch everything up if you drop your quickbooks_items_record, quickbooks_orders_record, and quickbooks_customers_record tables. Then, you'd need to set "quickbooks" in your ZC customers, orders, and items table to 0. This will tell QBSync that these particular items have not been exported yet. But, if matching is on, it will check first, and if it finds it in QB, it will match it instead of exporting it. With matching off, it will just ignore it if its already in QB, which is fine, but continuing sync won't work without items, customers, and orders matched.
Hope that makes sense to you. Its kind of hard to explain. But essentially, QBSync tries to use something called List_ID to identify orders, customers, and items. List_ID is a unique identifier in QB for items, orders, customers, etc... If no List_ID info exists in the customers_record, items_records, or orders_record table it will simply use their names/numbers instead. While this is fine, and will work for most people, there are some distinct advantages to using List_ID over the name/number: 1) If you change the name/number in QB it won't be able to find it anymore. 2) Continuing Sync requires List_ID as well as other information stored in the record tables.
Newly exported items, customers, and orders will always store List_ID as well as other info for continuing sync in the records table. However, old items, orders, and customers exported manually or through some other means will not have this info in the records table. Hence, the matching feature. If you turn matching on, QBSync will check QB to see if it already exists before exporting. Then, if it does, it will create the records table info that is needed including the List_ID and the info needed for continuing sync. The original intention of matching was for users who are just starting to use QBSync -- they can match their current QB file thereby creating the correct info in the records table. Again, this is not required for QBSync to work, but see the two advantages above! If you drop all three records tables and set quickbooks to 0 in ZC's orders, customers and items tables, it will be rebuilt correctly with matching as long as it can find these by name/number. If it can't find them by name/number it will export it to QB.
Please keep in mind that if you ever try something like this, backup QB and ZC first!