Error using variable inside UPDATE query, why?
up vote
-1
down vote
favorite
I have this code to update my record and to check if there's any value on the respective input
. But it's not even updating my record, and i got this error when i click on submit:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'
if(isset($_POST["updateBTN"])){
$insert_data = array(
'keywords' => $_POST['keywords'],
'img' => $_POST['img'],
'widht' => $_POST['widht'],
'status' => $_POST['status'],
'name' => $_POST['name'],
'height' => $_POST['height']
);
$sets="";
foreach ($insert_data as $column => $value) {
if ($value!=""){
$sets .= $column." = '".$column."', ";
}
}
$sets = rtrim($sets, ', ');
$query = "UPDATE table SET $sets WHERE title = :title";
$stmt = $conn->prepare($query);
$stmt->execute($insert_data);
}
html:
<form method="post">
<div>
<input type="text" name="title">
<span data-placeholder="Title"></span>
</div>
<div>
<input type="text" name="keywords">
<span data-placeholder="keywords"></span>
</div>
<div>
<input type="text" name="img">
<span data-placeholder="img"></span>
</div>
.
.
.
<button type="submit" name="updateBTN">Send</button>
</form>
php sql if-statement foreach sql-update
|
show 8 more comments
up vote
-1
down vote
favorite
I have this code to update my record and to check if there's any value on the respective input
. But it's not even updating my record, and i got this error when i click on submit:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'
if(isset($_POST["updateBTN"])){
$insert_data = array(
'keywords' => $_POST['keywords'],
'img' => $_POST['img'],
'widht' => $_POST['widht'],
'status' => $_POST['status'],
'name' => $_POST['name'],
'height' => $_POST['height']
);
$sets="";
foreach ($insert_data as $column => $value) {
if ($value!=""){
$sets .= $column." = '".$column."', ";
}
}
$sets = rtrim($sets, ', ');
$query = "UPDATE table SET $sets WHERE title = :title";
$stmt = $conn->prepare($query);
$stmt->execute($insert_data);
}
html:
<form method="post">
<div>
<input type="text" name="title">
<span data-placeholder="Title"></span>
</div>
<div>
<input type="text" name="keywords">
<span data-placeholder="keywords"></span>
</div>
<div>
<input type="text" name="img">
<span data-placeholder="img"></span>
</div>
.
.
.
<button type="submit" name="updateBTN">Send</button>
</form>
php sql if-statement foreach sql-update
1
are you sure that you give right output ofvar_dump()
?
– Artem Ilchenko
Nov 22 at 15:35
echo your $query and check if that's the output you are looking for
– Ruub
Nov 22 at 15:36
When you are building your SQL, any string values need to inside quotes (something like$sets .= $column." = '".$column."', ";
) but I would also recommend using prepared statements instead.
– Nigel Ren
Nov 22 at 15:38
$query = "UPDATE table SET $sets WHERE title = :title";
... you need bind the parameter$query ->bindParam(':title', $title);
– Juan Carlos Oropeza
Nov 22 at 16:11
@JuanCarlosOropeza I don't think so, since i'm using aarray
instead of binding. I tryed anyways and nothing changed.
– 515948453225
Nov 22 at 16:22
|
show 8 more comments
up vote
-1
down vote
favorite
up vote
-1
down vote
favorite
I have this code to update my record and to check if there's any value on the respective input
. But it's not even updating my record, and i got this error when i click on submit:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'
if(isset($_POST["updateBTN"])){
$insert_data = array(
'keywords' => $_POST['keywords'],
'img' => $_POST['img'],
'widht' => $_POST['widht'],
'status' => $_POST['status'],
'name' => $_POST['name'],
'height' => $_POST['height']
);
$sets="";
foreach ($insert_data as $column => $value) {
if ($value!=""){
$sets .= $column." = '".$column."', ";
}
}
$sets = rtrim($sets, ', ');
$query = "UPDATE table SET $sets WHERE title = :title";
$stmt = $conn->prepare($query);
$stmt->execute($insert_data);
}
html:
<form method="post">
<div>
<input type="text" name="title">
<span data-placeholder="Title"></span>
</div>
<div>
<input type="text" name="keywords">
<span data-placeholder="keywords"></span>
</div>
<div>
<input type="text" name="img">
<span data-placeholder="img"></span>
</div>
.
.
.
<button type="submit" name="updateBTN">Send</button>
</form>
php sql if-statement foreach sql-update
I have this code to update my record and to check if there's any value on the respective input
. But it's not even updating my record, and i got this error when i click on submit:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'
if(isset($_POST["updateBTN"])){
$insert_data = array(
'keywords' => $_POST['keywords'],
'img' => $_POST['img'],
'widht' => $_POST['widht'],
'status' => $_POST['status'],
'name' => $_POST['name'],
'height' => $_POST['height']
);
$sets="";
foreach ($insert_data as $column => $value) {
if ($value!=""){
$sets .= $column." = '".$column."', ";
}
}
$sets = rtrim($sets, ', ');
$query = "UPDATE table SET $sets WHERE title = :title";
$stmt = $conn->prepare($query);
$stmt->execute($insert_data);
}
html:
<form method="post">
<div>
<input type="text" name="title">
<span data-placeholder="Title"></span>
</div>
<div>
<input type="text" name="keywords">
<span data-placeholder="keywords"></span>
</div>
<div>
<input type="text" name="img">
<span data-placeholder="img"></span>
</div>
.
.
.
<button type="submit" name="updateBTN">Send</button>
</form>
php sql if-statement foreach sql-update
php sql if-statement foreach sql-update
edited Nov 22 at 15:44
asked Nov 22 at 15:31
515948453225
448
448
1
are you sure that you give right output ofvar_dump()
?
– Artem Ilchenko
Nov 22 at 15:35
echo your $query and check if that's the output you are looking for
– Ruub
Nov 22 at 15:36
When you are building your SQL, any string values need to inside quotes (something like$sets .= $column." = '".$column."', ";
) but I would also recommend using prepared statements instead.
– Nigel Ren
Nov 22 at 15:38
$query = "UPDATE table SET $sets WHERE title = :title";
... you need bind the parameter$query ->bindParam(':title', $title);
– Juan Carlos Oropeza
Nov 22 at 16:11
@JuanCarlosOropeza I don't think so, since i'm using aarray
instead of binding. I tryed anyways and nothing changed.
– 515948453225
Nov 22 at 16:22
|
show 8 more comments
1
are you sure that you give right output ofvar_dump()
?
– Artem Ilchenko
Nov 22 at 15:35
echo your $query and check if that's the output you are looking for
– Ruub
Nov 22 at 15:36
When you are building your SQL, any string values need to inside quotes (something like$sets .= $column." = '".$column."', ";
) but I would also recommend using prepared statements instead.
– Nigel Ren
Nov 22 at 15:38
$query = "UPDATE table SET $sets WHERE title = :title";
... you need bind the parameter$query ->bindParam(':title', $title);
– Juan Carlos Oropeza
Nov 22 at 16:11
@JuanCarlosOropeza I don't think so, since i'm using aarray
instead of binding. I tryed anyways and nothing changed.
– 515948453225
Nov 22 at 16:22
1
1
are you sure that you give right output of
var_dump()
?– Artem Ilchenko
Nov 22 at 15:35
are you sure that you give right output of
var_dump()
?– Artem Ilchenko
Nov 22 at 15:35
echo your $query and check if that's the output you are looking for
– Ruub
Nov 22 at 15:36
echo your $query and check if that's the output you are looking for
– Ruub
Nov 22 at 15:36
When you are building your SQL, any string values need to inside quotes (something like
$sets .= $column." = '".$column."', ";
) but I would also recommend using prepared statements instead.– Nigel Ren
Nov 22 at 15:38
When you are building your SQL, any string values need to inside quotes (something like
$sets .= $column." = '".$column."', ";
) but I would also recommend using prepared statements instead.– Nigel Ren
Nov 22 at 15:38
$query = "UPDATE table SET $sets WHERE title = :title";
... you need bind the parameter $query ->bindParam(':title', $title);
– Juan Carlos Oropeza
Nov 22 at 16:11
$query = "UPDATE table SET $sets WHERE title = :title";
... you need bind the parameter $query ->bindParam(':title', $title);
– Juan Carlos Oropeza
Nov 22 at 16:11
@JuanCarlosOropeza I don't think so, since i'm using a
array
instead of binding. I tryed anyways and nothing changed.– 515948453225
Nov 22 at 16:22
@JuanCarlosOropeza I don't think so, since i'm using a
array
instead of binding. I tryed anyways and nothing changed.– 515948453225
Nov 22 at 16:22
|
show 8 more comments
1 Answer
1
active
oldest
votes
up vote
0
down vote
- "Widht" looks like it's spelt wrong. Is that the actual column name?
- What does
print_r($sets);
show you?
$column
values should ideally be encased in backticks- I hope you're cleaning that
$_POST
data!!! - Your error states "the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'" which implies the error comes before the first
?
. Therefore, review the$sets
string output from the bullet above.
And last but not least:
- You REALLY SHOULD use the correct method for updating tables with PDO.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
- "Widht" looks like it's spelt wrong. Is that the actual column name?
- What does
print_r($sets);
show you?
$column
values should ideally be encased in backticks- I hope you're cleaning that
$_POST
data!!! - Your error states "the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'" which implies the error comes before the first
?
. Therefore, review the$sets
string output from the bullet above.
And last but not least:
- You REALLY SHOULD use the correct method for updating tables with PDO.
add a comment |
up vote
0
down vote
- "Widht" looks like it's spelt wrong. Is that the actual column name?
- What does
print_r($sets);
show you?
$column
values should ideally be encased in backticks- I hope you're cleaning that
$_POST
data!!! - Your error states "the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'" which implies the error comes before the first
?
. Therefore, review the$sets
string output from the bullet above.
And last but not least:
- You REALLY SHOULD use the correct method for updating tables with PDO.
add a comment |
up vote
0
down vote
up vote
0
down vote
- "Widht" looks like it's spelt wrong. Is that the actual column name?
- What does
print_r($sets);
show you?
$column
values should ideally be encased in backticks- I hope you're cleaning that
$_POST
data!!! - Your error states "the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'" which implies the error comes before the first
?
. Therefore, review the$sets
string output from the bullet above.
And last but not least:
- You REALLY SHOULD use the correct method for updating tables with PDO.
- "Widht" looks like it's spelt wrong. Is that the actual column name?
- What does
print_r($sets);
show you?
$column
values should ideally be encased in backticks- I hope you're cleaning that
$_POST
data!!! - Your error states "the right syntax to use near '? = ':title', ? = ':keywords' WHERE title = ?'" which implies the error comes before the first
?
. Therefore, review the$sets
string output from the bullet above.
And last but not least:
- You REALLY SHOULD use the correct method for updating tables with PDO.
answered Nov 22 at 16:31
Martin
12.3k53478
12.3k53478
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434173%2ferror-using-variable-inside-update-query-why%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
are you sure that you give right output of
var_dump()
?– Artem Ilchenko
Nov 22 at 15:35
echo your $query and check if that's the output you are looking for
– Ruub
Nov 22 at 15:36
When you are building your SQL, any string values need to inside quotes (something like
$sets .= $column." = '".$column."', ";
) but I would also recommend using prepared statements instead.– Nigel Ren
Nov 22 at 15:38
$query = "UPDATE table SET $sets WHERE title = :title";
... you need bind the parameter$query ->bindParam(':title', $title);
– Juan Carlos Oropeza
Nov 22 at 16:11
@JuanCarlosOropeza I don't think so, since i'm using a
array
instead of binding. I tryed anyways and nothing changed.– 515948453225
Nov 22 at 16:22