PDO Insert with Select Statement Error / Invalid parameter number [duplicate]












1
















This question already has an answer here:




  • When to use single quotes, double quotes, and back ticks in MySQL

    12 answers



  • My PDO Statement doesn't work

    1 answer




Doing the query manually in PHPMyAdmin



INSERT INTO productimages (ImageURL, productID)
VALUES('http://test.jpg', (SELECT id
FROM products
WHERE products.MPN = 'test'));


Works just fine.



But trying to use PDO...



try {
$sql = "INSERT INTO productimages (ImageURL, productID)
VALUES(':image_url', (SELECT id
FROM products
WHERE products.MPN = ':mpn'));";
$data = [
'image_url' => $image_url,
'mpn' => $mpn
];
$stmt = $conn->prepare($sql);
$stmt->execute($data);
}
catch(PDOException $e)
{
echo '<h2 style="color:red;">' . $e->getMessage() . '</h2>';
}


I am always getting this error:




SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens




How do I properly form this INSERT query to perform with PDO?










share|improve this question













marked as duplicate by Funk Forty Niner mysql
Users with the  mysql badge can single-handedly close mysql questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 18 '18 at 22:58


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.














  • 1





    @FunkFortyNiner Thank you. That worked. Once I added backtick's (`) to the tables and columns, it performs correctly.

    – Brian Bruman
    Nov 18 '18 at 23:01








  • 1





    You're welcome Brian; always glad to see that the duplicate(s) helped in solving it yourself, cheers :)

    – Funk Forty Niner
    Nov 18 '18 at 23:02
















1
















This question already has an answer here:




  • When to use single quotes, double quotes, and back ticks in MySQL

    12 answers



  • My PDO Statement doesn't work

    1 answer




Doing the query manually in PHPMyAdmin



INSERT INTO productimages (ImageURL, productID)
VALUES('http://test.jpg', (SELECT id
FROM products
WHERE products.MPN = 'test'));


Works just fine.



But trying to use PDO...



try {
$sql = "INSERT INTO productimages (ImageURL, productID)
VALUES(':image_url', (SELECT id
FROM products
WHERE products.MPN = ':mpn'));";
$data = [
'image_url' => $image_url,
'mpn' => $mpn
];
$stmt = $conn->prepare($sql);
$stmt->execute($data);
}
catch(PDOException $e)
{
echo '<h2 style="color:red;">' . $e->getMessage() . '</h2>';
}


I am always getting this error:




SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens




How do I properly form this INSERT query to perform with PDO?










share|improve this question













marked as duplicate by Funk Forty Niner mysql
Users with the  mysql badge can single-handedly close mysql questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 18 '18 at 22:58


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.














  • 1





    @FunkFortyNiner Thank you. That worked. Once I added backtick's (`) to the tables and columns, it performs correctly.

    – Brian Bruman
    Nov 18 '18 at 23:01








  • 1





    You're welcome Brian; always glad to see that the duplicate(s) helped in solving it yourself, cheers :)

    – Funk Forty Niner
    Nov 18 '18 at 23:02














1












1








1









This question already has an answer here:




  • When to use single quotes, double quotes, and back ticks in MySQL

    12 answers



  • My PDO Statement doesn't work

    1 answer




Doing the query manually in PHPMyAdmin



INSERT INTO productimages (ImageURL, productID)
VALUES('http://test.jpg', (SELECT id
FROM products
WHERE products.MPN = 'test'));


Works just fine.



But trying to use PDO...



try {
$sql = "INSERT INTO productimages (ImageURL, productID)
VALUES(':image_url', (SELECT id
FROM products
WHERE products.MPN = ':mpn'));";
$data = [
'image_url' => $image_url,
'mpn' => $mpn
];
$stmt = $conn->prepare($sql);
$stmt->execute($data);
}
catch(PDOException $e)
{
echo '<h2 style="color:red;">' . $e->getMessage() . '</h2>';
}


I am always getting this error:




SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens




How do I properly form this INSERT query to perform with PDO?










share|improve this question















This question already has an answer here:




  • When to use single quotes, double quotes, and back ticks in MySQL

    12 answers



  • My PDO Statement doesn't work

    1 answer




Doing the query manually in PHPMyAdmin



INSERT INTO productimages (ImageURL, productID)
VALUES('http://test.jpg', (SELECT id
FROM products
WHERE products.MPN = 'test'));


Works just fine.



But trying to use PDO...



try {
$sql = "INSERT INTO productimages (ImageURL, productID)
VALUES(':image_url', (SELECT id
FROM products
WHERE products.MPN = ':mpn'));";
$data = [
'image_url' => $image_url,
'mpn' => $mpn
];
$stmt = $conn->prepare($sql);
$stmt->execute($data);
}
catch(PDOException $e)
{
echo '<h2 style="color:red;">' . $e->getMessage() . '</h2>';
}


I am always getting this error:




SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens




How do I properly form this INSERT query to perform with PDO?





This question already has an answer here:




  • When to use single quotes, double quotes, and back ticks in MySQL

    12 answers



  • My PDO Statement doesn't work

    1 answer








php mysql pdo






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 18 '18 at 22:58









Brian BrumanBrian Bruman

34427




34427




marked as duplicate by Funk Forty Niner mysql
Users with the  mysql badge can single-handedly close mysql questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 18 '18 at 22:58


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.









marked as duplicate by Funk Forty Niner mysql
Users with the  mysql badge can single-handedly close mysql questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 18 '18 at 22:58


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.










  • 1





    @FunkFortyNiner Thank you. That worked. Once I added backtick's (`) to the tables and columns, it performs correctly.

    – Brian Bruman
    Nov 18 '18 at 23:01








  • 1





    You're welcome Brian; always glad to see that the duplicate(s) helped in solving it yourself, cheers :)

    – Funk Forty Niner
    Nov 18 '18 at 23:02














  • 1





    @FunkFortyNiner Thank you. That worked. Once I added backtick's (`) to the tables and columns, it performs correctly.

    – Brian Bruman
    Nov 18 '18 at 23:01








  • 1





    You're welcome Brian; always glad to see that the duplicate(s) helped in solving it yourself, cheers :)

    – Funk Forty Niner
    Nov 18 '18 at 23:02








1




1





@FunkFortyNiner Thank you. That worked. Once I added backtick's (`) to the tables and columns, it performs correctly.

– Brian Bruman
Nov 18 '18 at 23:01







@FunkFortyNiner Thank you. That worked. Once I added backtick's (`) to the tables and columns, it performs correctly.

– Brian Bruman
Nov 18 '18 at 23:01






1




1





You're welcome Brian; always glad to see that the duplicate(s) helped in solving it yourself, cheers :)

– Funk Forty Niner
Nov 18 '18 at 23:02





You're welcome Brian; always glad to see that the duplicate(s) helped in solving it yourself, cheers :)

– Funk Forty Niner
Nov 18 '18 at 23:02












0






active

oldest

votes

















0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes