请问,为什么无法把变量循环输入数据库中呢,是SQL语句错误还是程序嵌套问题?

[code="java"]<?php
$con = mysql_connect("localhost","root","5555555551");
//mysql_query("SET NAMES 'UTF-8'");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("zuobiao",$con); //选择数据库
for ($i=1;$i<=5;$i++){
$x= mysql_query("select x,y from t1 order by DrugSId asc limit 1,$i");
$rs = mysql_fetch_array($x);
$cc=$rs['y'].",".$rs['x'];
//echo $cc."
";
$url="https://maps.googleapis.com/maps/api/place/search/json?language=zh-CN&location=$cc&&radius=500&sensor=false&key=AIzaSyCxLAQfEbXSARI3UD7_Nkj0WbVvQqnQuX0";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$body=curl_exec($curl);
curl_close($curl);
$place=json_decode($body,true);
foreach ($place as $b){

           foreach((array)$b as $c){
          if(!is_array($c))
             continue;
               $d=$c['name'].",";
                //echo $d; 
                 $sql=mysql_query("insert into t1(keywords) values ('$d')");
                 // echo $sql
               // or  die ('SLQ Syntax error '.mysql_error());                     
                if ($d == null){
         continue;}
     }
 }  

}
?>

[/code]
数据库结构如下

[img]http://dl.iteye.com/upload/attachment/0073/0323/41ad7c14-c43d-3877-9bcc-6603a329135f.jpg[/img]

如果直接输出$d,是正常的,可以获得一串地名,但是如果插入数据库就只能获得一串地名中的一项.请问哪个地方写错了,如何修改?
为方便各位高手调试,给出1-5之内的数据

[img]http://dl.iteye.com/upload/attachment/0073/0340/f7b747fd-9bf0-3a2b-bc77-e3298e7f7a71.jpg[/img]

php

3个回答

你是不是需要这样的功能;

1、首先根据x 和 y 到google 那边查 数据,如果查出来是多个区域[a,b,c],则更新到数据库时是a,b,c

2、因此你需要更新x 和 y的keywords功能 而不是插入,可以参考下面语句:
2.1、首先拿到所有keywords 通过“,”拼起来;
2.2、执行update

[code="java"]在 $cc=$rs['y'].",".$rs['x']; 定义

$xx = $rs['x'];
$yy = $rs['y'];

foreach ($place as $b){

$d = "";
foreach((array)$b as $c){

if(!is_array($c))

continue;

if($d != "") {
$d = ",".$d;
}
$d=$d.$c['name'];

}

$sql=mysql_query("update t1 set keywords = '$d' where x='$xx' and y='$yy'");

} [/code]

ibmak47
ibmak47 已加,SQL数据也发过来了
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 这个估计是$xx $yy 获取值的原因 你在把你的程序完整发我一份
大约 8 年之前 回复
ibmak47
ibmak47 改正后就显示出update语句了,好消息是可以插入数据进数据库了,坏消息是只能插入第二条,而且插入进去的数据只显示了$d 的第一条,没有插入循环出来的值 http://imgsrc.baidu.com/forum/pic/item/e4dde71190ef76c6f3aff9b49d16fdfaaf51672b.jpg
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian where x='$xx' and y='$yy'"
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian where x='$yy' and y='$xx'" 你这先反了
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian $xx $yy定义了吗
大约 8 年之前 回复
ibmak47
ibmak47 看起来好像是正确的,只输出一大串的Notice: Use of undefined constant a - assumed 'a' in,数据库中依旧没内容
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian $a = "update t1 set keywords = '$d' where x='$yy' and y='$xx'"; echo a 这样呢 你想法把这个字符串打印出来
大约 8 年之前 回复
ibmak47
ibmak47 Parse error: syntax error, unexpected 't1' (T_STRING) in D:\Program Files (x86)\xampp\htdocs\test.php on line 35
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 你打印下 "update t1 set keywords = '$d' where x='$yy' and y='$xx'" 这个sql 我瞅瞅 什么问题
大约 8 年之前 回复
ibmak47
ibmak47 没有啊,这才是我最郁闷的 http://imgsrc.baidu.com/forum/pic/item/6c224f4a20a4462307d9bdfd9822720e0cf3d719.jpg
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 1就是成功了 你循环打印的吧 就是11111111111111 就是都成功了 数据库里相应的记录改了吗
大约 8 年之前 回复
ibmak47
ibmak47 http://imgsrc.baidu.com/forum/pic/item/9825bc315c6034a82f47a61ecb13495408237683.jpg
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian echo $sql 输出的内容我看看
大约 8 年之前 回复
ibmak47
ibmak47 foreach ($place as $b){ foreach((array)$b as $c){ $d = ""; if(!is_array($c)) continue; if($d != "") { $d = ",".$d; } $d=$d.$c['name']; //echo $d; $sql=mysql_query("update t1 set keywords = '$d' where x='$yy' and y='$xx'"); // echo $sql //or die("error:".mysql_error()); if ($d == null){ continue;} } }
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 能发上来我看看吗
大约 8 年之前 回复
ibmak47
ibmak47 理解是对的,update就是复制的你的那行,我echo $sql 之后就出现一长串的1111111111.
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 首先我的理解对吗 你怎么写的update? 返回值111111111111111111111 ?这是什么意思
大约 8 年之前 回复
ibmak47
ibmak47 update 我昨天也试过,都是失败了,打开下面的输出调试,返回值是这样的:111111111111111111111
大约 8 年之前 回复

代码看不出来。

insert那句SQL打印出来看过吗?

话说,

看代码的意思是根据坐标x,y调用google map api查出地名关键字,然后更新回去。

如果是这样的话,不应该是insert吧?我怎么觉得应该是update呢?

[code="sql"]
update t1 set keywords = '$d' where x=XXX and y=YYY
[/code]

类似这样?

MySQL支持在一条INSERT语句中插入多条记录
建议你用
insert into t1(keywords) values ('上海'),('北京');
这种格式一次性插入

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐