无法将字符串发送到INSERT查询

时间:2013-10-12 11:44:41

标签: php mysql sql json

我有json作为输入

$page = file_get_contents('http://example.com/products.html');
$items = json_decode($page, true);

如果我把echo $ page;我这样得到了什么

{
"productlist":[
{
"id":"1",
"cat":"milk",
"prod_name":"happy milk",
"img_url":"http://example.com/milk.jpg"},
{
"id":"2",
"cat":"bread",
"prod_name":"black bread",
"img_url":"http://example.com/bread.jpg"},

然后,我想将它放入MySQL DB

foreach($items['productlist'] as $item) {
$id = $item['id'];
$cat = $item['cat'];
mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, $cat)")  or die(mysql_error());
}

在这个阶段我什么都没得到。如果我将代码修改为

foreach($items['productlist'] as $item) {
$id = $item['id'];
mysqli_query($link, "INSERT INTO table (id) VALUES ($id)")  or die(mysql_error());
}

我在DB填充表中 - 我有两行prod id。好的,我想在表格中插入$ cat = food

foreach($items['productlist'] as $item) {
$id = $item['id'];
$cat = 'food';
mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, $cat)")  or die(mysql_error());
}

然而这不起作用,我得到null结果。但如果我将查询修改为

foreach($items['productlist'] as $item) {
$id = $item['id'];
mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, 'food')")  or die(mysql_error());
}

我得到了我寻求的结果 - 表中的行,充满了id和cat

id   cat
1    food
2    food 

有没有人知道如何通过变量将字符串值发送到插入查询?

3 个答案:

答案 0 :(得分:0)

这不起作用,因为catString字段,需要在引号'...'之间。试试这个:

mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, '$cat')")  or die(mysql_error());

或者这个:

mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, ".$cat.")")  or die(mysql_error());

答案 1 :(得分:0)

首先,我建议您学习如何使用预准备语句,因为您在代码之外获取字符串(可能包含一些mysql注入)。

要回答你的问题,你需要在你想要放入查询的变量周围放一些引号,因为它是一个字符串,所以mysql可以正确解释它

mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, '$cat')")  or die(mysql_error());

答案 2 :(得分:0)

试试这个

mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, ".mysql_real_escape_string($cat).")") or die(mysql_error());