1

私はjsonを入力として持っています

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

エコー$ページを入れた場合; 私はこのようにsmthを取得します

{
"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 のテーブルがいっぱいになりました - 製品 ID を持つ 2 つの行があります。OK、テーブルに $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 

変数を介して挿入クエリに文字列値を送信する方法を知っている人はいますか?

4

3 に答える 3

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());
于 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 に答える