我有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
有没有人知道如何通过变量将字符串值发送到插入查询?
答案 0 :(得分: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());
答案 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());