Php 脚本添加不起作用 介绍
我正在尝试制作一个API。从数据库读取数据很好。。。 然而,给它写信是失败的 奇怪的是,当我将查询错误日志打印出来并粘贴到PHPMyAdmin中时,它正确地添加了对象 代码 index.phpPhp 脚本添加不起作用 介绍,php,mysql,asp.net-web-api,Php,Mysql,Asp.net Web Api,我正在尝试制作一个API。从数据库读取数据很好。。。 然而,给它写信是失败的 奇怪的是,当我将查询错误日志打印出来并粘贴到PHPMyAdmin中时,它正确地添加了对象 代码 index.php ... else if($tag == 'addIngredient'){ $name = $_POST['name']; $cal = $_POST['cal']; $fat = $_POST['fat']; error_log("name=".$name." cal=
...
else if($tag == 'addIngredient'){
$name = $_POST['name'];
$cal = $_POST['cal'];
$fat = $_POST['fat'];
error_log("name=".$name." cal=".$cal."fat=".$fat);
if(!$db->addIngredient($name,$cal,$fat)){
$response["error"] = TRUE;
$response["error_msg"] = "addIngredient failed";
}
}
...
BDFunctions.php
...
public function addIngredient($name, $cal, $fat){
$query= "INSERT INTO `ingredient` (`name`, `cal`, `fat`) VALUES('".$name."', ".$cal.", ".$fat.");";
error_log($query);
$result = mysql_query($query);
if($result){return true;}
return false;
}
...
我在apache日志中得到这些打印输出:
[Wed Apr 29 20:46:58 2015][error][client 192.168.1.9]name=testName cal=50fat=20
[Wed Apr 29 20:46:58 2015][error][client 192.168.1.9]插入成分(name
,cal
,fat
)值('testName',50,20)
您应该在那里的某个地方捕捉到mysql\u error()。我还添加了sprintf()
,以帮助更好地准备语句。我也看不到您的数据库链接($Link
,$con
,等等)
你的程序是否正常工作?我的意思是if工作正常,而不是担心Apache日志的原因。您不需要在查询末尾的字符串中使用分号。先把它拿出来。同样,在一个不相关的主题上,你应该考虑把这个代码移植到MySQL或PDO上。不推荐使用mysql.*
函数系列。$result=mysql\u query($query)或die(mysql\u error())代码>在打开PHP标记后立即将错误报告添加到文件顶部,例如@KoenDemonie,文件中一定有其他内容与给定的信息不符。我在我的机器上运行了你的代码,它似乎添加了一些东西。为了加强@spencer7593所说的内容。如果这只是一个测试项目,那么这就是开始使用mysqli或PDO等API进行测试/实践的绝佳机会。两者都可以使用准备好的语句,这是帮助防止SQL注入的一个很好的工具。您将找到的关于防止此类攻击的大部分信息可能都提到使用准备好的语句。
public function addIngredient($name, $cal, $fat){
$query= sprintf("INSERT INTO `ingredient` (`name`, `cal`, `fat`) VALUES ('%s', %d, %d);",
$name,
$cal,
$fat
);
error_log($query);
$result = mysql_query($query);
if($result){return true;}
error_log(mysql_errno($link) . ": " . mysql_error($link));
return false;
}