how can I add same value in two different tables - php

i m trying to add custom list of tags using excel file and I have done most of the work. but i am confused that how can I add same value in 2 different tables columns.
i had inserted the values in
INSERT INTO `steve`.`wp_terms` (`term_id`, `name`, `slug`, `term_group`) VALUES (NULL, 'tag99', 'tag99', '0');
and
INSERT INTO `steve`.`wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, '21', 'post_tag', '', '0', '0');
now i want to add term_id in both table .. could somebody tell me how can i do that?
AND term_id is database generated value.

INSERT INTO `steve`.`wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, LAST_INSERT_ID, 'post_tag', '', '0', '0');
If I follow correctly your first query inserts into a table and creates a new id for that record, then you want to use that ID in the next query to insert into a different table right? If that's the case the above query should work for your second one using LAST_INSERT_ID for the term_id value.
To update the question with your new code it should, I emphasize should, work with this:
$sql2 = "INSERT INTO " . $table2 . " (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, LAST_INSERT_ID, 'post_tag', '', '0', '0')";
$wpdb->query($sql);
$wpdb->query($sql2);
The way you have it above you are overwriting your first query before you execute it.
Also I don't understand how you're inserting nulls into an auto-increment field, that alone should be throwing an error. Honestly both your queries should be leaving their base ids (the auto increment ones) out of the query entirely like this:
$sql2 = "INSERT INTO " . $table2 . " (term_id, taxonomy, description, parent, count) VALUES (LAST_INSERT_ID, 'post_tag', '', '0', '0')";

Use mysql_insert_id()
mysql_query("INSERT INTO `steve`.`wp_terms` (`term_id`, `name`, `slug`, `term_group`) VALUES (NULL, 'tag99', 'tag99', '0')");
$lastInsertId = mysql_insert_id();
mysql_query("INSERT INTO `steve`.`wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (NULL, '" . $lastInsertId . "', 'post_tag', '', '0', '0')");
NOTE: To use mysql_insert_id(), term_id in wp_terms must be set to auto increment.

you need to use ALTER table and add that column's definition/constraints into the other table, here's the manual

Related

INSERT INTO SELECT WITH DECLARING OTHER COLUMS VALUE

I just want to ask. what is the problem in here I just want to add some value to the the columns and get other value to the other table. I hope you can help me. I only have the problem in the first 4 value.
Error: INSERT INTO `orders` (`address`, `payment_method`, `contactnumber`, `order_status`, `cart_id`, `user_id`, `item_id`) VALUES ('Bulacan', '','0912312332', 'Pending' ,(SELECT `cart_id`,`user_id`,`item_id` FROM `cart`))
Operand should contain 1 column(s)
$sql = "INSERT INTO `orders` (`address`, `payment_method`, `contactnumber`, `order_status``cart_id`, `user_id`, `item_id`)
VALUES ('$address', '$payment', '$cnumber', '$status'(SELECT `cart_id`,`user_id`,`item_id` FROM `cart`) )";
-Thankyou.
INSERT INTO `orders` (`address`, `payment_method`, `contactnumber`,
`order_status`, `cart_id`, `user_id`, `item_id`)
SELECT 'Bulacan', '','0912312332', 'Pending', `cart_id`,`user_id`,`item_id`
FROM `cart`
WHERE { ??? }

How do you pass multiple sql statements using php [duplicate]

This question already has answers here:
php/mysql with multiple queries
(3 answers)
Closed 7 years ago.
This is what i want to do but with lots of records. When i try this i get this kind of error:the error message i get
this is my currant php and when i submit it no record is added.
$sql = "INSERT INTO `people` (`id`, `firstname`, `lastname`, `email`, `reg_date`) VALUES (NULL, 'firstnameA', 'surnameA', 'example1#email.com', CURRENT_TIMESTAMP);
INSERT INTO `people` (`id`, `firstname`, `lastname`, `email`, `reg_date`) VALUES (NULL, 'firstnameB', 'surnameB', 'example#email.com', CURRENT_TIMESTAMP);
" ;
However this code works but i am only adding one record
$sql = "INSERT INTO `people` (`id`, `firstname`, `lastname`, `email`, `reg_date`) VALUES (NULL, 'tom', 'walker', 'tom#walker.com', CURRENT_TIMESTAMP);
"
You just need to duplicate the values portion, like this:
$sql = "INSERT INTO `people` (`id`, `firstname`, `lastname`, `email`, `reg_date`)
VALUES (NULL, 'tom', 'walker', 'tom#walker.com', CURRENT_TIMESTAMP),
(NULL, 'bob', 'jones', 'bob#jones', CURRENT_TIMESTAMP)";
Use mysqli_multi_query check out:
http://php.net/manual/en/mysqli.multi-query.php

Conversion from MySQL to mysqli not working

I am in a process of converting my Existing MySQL to mysqli
But I can't get this piece of code correct
mysql_query("INSERT INTO `sendmsg`(`sendname`, `recievename`, `subject`, `body` , `mdate`, `mtime`) VALUES ('$sendname','$recievename','$subject','$body','$msgdate','$msgtime')");
$new_id = mysql_insert_id();
mysql_query("INSERT INTO `recievemsg`(`msgid`, `sendname`, `recievename`, `subject`, `body`, `mdate`, `mtime`, `status`) VALUES ($new_id,'$sendname','$recievename','$subject','$body','$msgdate','$msgtime','UNREAD')");
What I tried is given below but didn't work
$mysqli->query("INSERT INTO `sendmsg`(`sendname`, `recievename`, `subject`, `body` , `mdate`, `mtime`) VALUES ('$sendname','$recievename','$subject','$body','$msgdate','$msgtime')");
$new_id = mysqli_insert_id();
$mysqli->query("INSERT INTO `recievemsg`(`msgid`, `sendname`, `recievename`, `subject`, `body`, `mdate`, `mtime`, `status`) VALUES ($new_id,'$sendname','$recievename','$subject','$body','$msgdate','$msgtime','UNREAD')");
The Problem is with the $new_id = mysqli_insert_id(); statement bcoz the first query is executing
For mysqli Object oriented style to get the last inserted id use this
$mysqli->insert_id ;
http://www.php.net/manual/en/mysqli.insert-id.php
So your queries will be as
$mysqli->query("INSERT INTO `sendmsg`(`sendname`, `recievename`, `subject`, `body` , `mdate`, `mtime`) VALUES ('$sendname','$recievename','$subject','$body','$msgdate','$msgtime')");
$new_id = $mysqli->insert_id;
$mysqli->query("INSERT INTO `recievemsg`(`msgid`, `sendname`, `recievename`, `subject`, `body`, `mdate`, `mtime`, `status`) VALUES ($new_id,'$sendname','$recievename','$subject','$body','$msgdate','$msgtime','UNREAD')");

#1062 - Duplicate entry '31' for key 'PRIMARY'

php error:
#1062 - Duplicate entry '31' for key 'PRIMARY'
query:
INSERT INTO `calls`(
`id`, `number`, `type`, `charges`, `duration`, `date`, `c_number`
)
VALUES (31,'03227453033','onnet',2,1,'2012-12-06','03216196069')
id is my primary key and its auto incremented. Currently there are 30 rows in my database
table.
For an auto-increment field, you leave it out of a SQL insert query as mysql will auto-populate it. Only do this if it is defined as an auto-increment field.
INSERT INTO `calls`(`number`, `type`, `charges`, `duration`, `date`, `c_number`)
VALUES ('03227453033' ,'onnet', 2, 1, '2012-12-06', '03216196069')
INSERT INTO calls(number, type, charges, duration, date, c_number) VALUES ('03227453033','onnet',2,1,'2012-12-06','03216196069')
This should work.
If id is auto incremented, then you shouldn't normally include it in your INSERT statement. It seems that you already have a row with id 31.

PDO 2300 upon insert though no rows exist

$compost = $dbh->prepare("INSERT INTO `table`
(`PRIMARY`, `some`, `content`, `rows`, `and`, `boolean`)
VALUES ('', :binded, :param, :inputs, :blah, 0)") ;
the primary key iterates automatically and clasicaly this means my inserts do not need to give actual input for that column just ' ' is fine.
However this keeps throwing a 2300 error.
no rows are indexes or keys just the primary and a dumped all the table rows before attempting this script.
So I removed the primary
$compost = $dbh->prepare("INSERT INTO `table`
( `some`, `content`, `rows`, `and`, `boolean`)
VALUES ( :binded, :param, :inputs, :blah, 0)") ;
but it still throws the error, going to make a new table and try that
Leave the primary key if it is auto increment.
$compost = $dbh->prepare("INSERT INTO `table`
(`some`, `content`, `rows`, `and`, `boolean`)
VALUES (:binded, :param, :inputs, :blah, 0)") ;
If your PRIMARY column name is 'PRIMARY' you can try:
$compost = $dbh->prepare("INSERT INTO `table`
(`PRIMARY`, `some`, `content`, `rows`, `and`, `boolean`)
VALUES (PRIMARY, :binded, :param, :inputs, :blah, 0)") ;
or just not to mention that field at all:
$compost = $dbh->prepare("INSERT INTO `table`
(`some`, `content`, `rows`, `and`, `boolean`)
VALUES (:binded, :param, :inputs, :blah, 0)") ;

Categories