在函数中使用时,mysql查询不起作用

时间:2013-10-20 13:25:14

标签: php mysql sql function

我有以下代码将数据放入mysql数据库:

$sql3 = "INSERT INTO $tableName (topic, title, date) VALUES ('$topic','$title','$today')";
mysql_query($sql3);

效果很好。

但是,当我在函数中使用代码时,它不起作用。传递给函数的参数在代码的其他地方使用,不应影响上面代码的操作。

当我添加:

if(mysql_errno()){     
echo "MySQL error ".mysql_errno().": "          
.mysql_error()."\n<br>When executing <br>\n$query\n<br>"; }

我收到错误:

MySQL错误1064:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'(主题,标题,日期)附近使用正确的语法VALUES('天气','看起来像秋天是他'在第1行 执行时

我无法弄清楚为什么在函数中使用代码时会出现SQL语法错误,而不是在它自己的时候出现错误。

先谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您的问题最有可能与变量范围有关。例如:

$myVar = "Hello!";

// Outputs Hello!

echo $myVar;

function sayHello() {
    // $myVar is no longer in scope because we are "inside" the function.
    echo $myVar;
}

// undefined variable $myVar
sayHello();

当您在函数中执行查询时,变量$tablename不再在范围内,因此您的查询将变为:

INSERT INTO (topic, title, date) VALUES ('$topic','$title','$today')

这显然无效。

$tableName传递给您的函数,将其硬编码到查询中或使用global。但是,使用全局变量并不是一个好主意。