2013-02-20 79 views
0
<? 

$string = '<?php 

$con = mysql_connect("localhost","#","#"); 
if (!$con) 
    { 
    die("Could not connect: " . mysql_error()); 
    } 

$location = $_SERVER["REMOTE_ADDR"]; 
$live = "Scotland"; 

mysql_select_db("#", $con); 
// Line 77 below 
mysql_query("UPDATE order SET location='{$location}' WHERE live='{$live}'"); 

?>'; 


$my_file = 'data.php'; 
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file); 
fwrite($handle, $string); 

?> 

当我尝试上面的代码我在尝试写data.php文件时,这个错误:PHP/SQL查询 - 语法错误,意外“{”,但取出时查询不起作用

Parse error: syntax error, unexpected '{' in /home/#/public_html/write.php on line 77

我试着从{位置}和{活}周围删除撇号('),但然后查询不起作用。

谁能帮我这个,感谢

+0

这样产生php脚本有什么意义?如何正确的字符串语法转义,PHP字符串表达式转义和数据库上下文转义? – mario 2013-02-20 03:52:31

回答

3

我假设你正试图使某种自动代码制作脚本。

看起来你已经遇到了引号的问题。

您似乎遇到的问题是在生成字符串时正在解释变量,而不是在另一侧生成字符串。像下面的内容可以至少解决您所遇到的问题之一:

<?php 
$string = <<<EOT 
<?php 
$con = mysql_connect("localhost","#","#"); 
if (!$con) 
    { 
    die("Could not connect: " . mysql_error()); 
    } 

$location = \$_SERVER["REMOTE_ADDR"]; 
$live = "Scotland"; 

mysql_select_db("#", $con); 
// Line 77 below 
mysql_query("UPDATE order SET location='{$location}' WHERE live='{$live}'"); 

?> 
EOT; 

$my_file = 'data.php'; 
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file); 
fwrite($handle, $string); 
?> 

此外,该会还没有在另一端编译,你需要躲避“$”您所使用的所有变量(如\ $ CON和\ $直播)

(未测试的代码)

为了解决但您的实际问题,试试这个:

mysql_query("UPDATE order SET location=\'{$location}\' WHERE live=\'{$live}\'"); 

(逃逸引号)

+0

谢谢,工作完美:D – Koala 2013-02-20 04:11:13

0

你可以试试这个:

mysql_query("UPDATE order SET location=".$location." WHERE live=".$live); 
+0

有没有错误,但查询不会更新data.php上的数据库 – Koala 2013-02-20 03:42:57

+0

检查$位置是否能够检索任何数据 – 2013-02-20 03:45:28

+0

我echo'd $位置,它显示我的IP,我有双重检查数据库信息通过做像 设置位置='1'其中live ='苏格兰'和它更新 – Koala 2013-02-20 03:48:39