1

我有 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());
}

我在数据库中填满了表格 - 我有两行带有产品 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());
}

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

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 

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

4

3 回答 3

0

这不起作用,因为cat它是一个String字段,需要在引号之间'...'。尝试这个 :

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());
于 2013-10-12T11:50:15.177 回答
0

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

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

mysqli_query($link, "INSERT INTO table (id, cat) VALUES ($id, '$cat')")  or die(mysql_error());
于 2013-10-12T11:51:45.560 回答
0

尝试这个

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

于 2013-10-12T11:54:00.217 回答