Я делаю API для простого форума ,, Теперь пытается добавить информацию в базу данных и сохранить его (экономия пост)добавления информации в базу данных с PHP
на странице управления: savePost.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
if(!isset($_GET['id']))
{
die('bad access');
}
$_id = (int)$_GET['id']; // to avoid injection and typing codes in url
if ($_id == 0)
{
die('Bad Access');
}
require_once('fourmsAPI.php');
require_once('postsAPI.php');
$forum = tinyf_forums_get_by_id($_id);
if(!$forum){
tinyf_db_close(); //important
die('Bad Forum ID');
}
if(!isset($_POST['title']) or (!isset($_POST['content']))) {
die('bye');
}
require_once('fourmsAPI.php');
$result = tinyf_post_add($_id,0,0,trim($_POST['title']),trim($_POST['content'])) ;
tinyf_db_close();
if($result){
die('sucess');
}
else{
die('Failed');
}
результат =====> Не удалось
Apifile:
postsAPI.php
<?php
//Posts APIs
function tinyf_posts_get($extra ='')
{
global $tf_handle;
$query = sprintf("SELECT * FROM `posts` %s ",$extra);
$qresult = mysqli_query($tf_handle, $query);
if (!$qresult)
return NULL;
$recount = mysqli_num_rows($qresult);
if ($recount == 0)
return NULL ;
$posts = array();
for($i = 0 ; $i < $recount ; $i++)
$posts[count($posts)] = mysqli_fetch_object($qresult);
//mysql_free_result($qresult);
return $posts;
}
function tinyf_posts_get_by_id($pid)
{
$id = (int)$pid;
if($id == 0)
return NULL ;
$result = tinyf_posts_get('WHERE `id` ='.$id);
if($result == NULL)
return NULL;
$post = $result[0];
return $post;
}
//get result is array()
function tinyf_posts_get_reply_by_id($pid)
{
$id = (int)$pid;
if($id == 0)
return NULL ;
$result = tinyf_posts_get('WHERE `pid` ='.$id);
if($result == NULL)
return NULL;
return $post;
}
function tinyf_post_add($fid,$pid,$uid,$title,$content)
{
global $tf_handle;
$_fid = (int)$fid;
$_pid = (int)$pid;
$_uid = (int)$uid;
if(($_fid == 0) /* || ($_uid == 0)*/){
return false ;
}
if ((empty($title)) || (empty($content)))
return false;
$n_title = mysqli_real_escape_string($tf_handle, strip_tags($title));
$n_content = mysqli_real_escape_string($tf_handle, strip_tags($content));
$query = sprintf("INSERT INTO `users` VALUE(NULL,'%d','%d','%d','%s','%s')",$_fid,$_pid,$_uid,$n_title,$n_content);
$qresult = mysqli_query($tf_handle, $query);
if(!$qresult)
return false;
return true;
}
function tinyf_posts_delete_reply($pid)
{
global $tf_handle;
$id = (int)$pid;
if($id == 0)
return false ;
$query = sprintf ("DELETE FROM `posts` WHERE `pid`= %d",$id);
$qresult = mysqli_query($tf_handle, $query);
if(!$qresult)
return false;
return true;
}
function tinyf_posts_delete($pid)
{
global $tf_handle;
$id = (int)$pid;
if($id == 0)
return false ;
$query = sprintf ("DELETE FROM `posts` WHERE `id`= %d",$id);
tinyf_posts_delete_reply($pid);
$qresult = mysqli_query($tf_handle, $query);
if(!$qresult)
return false;
return true;
}
function tinyf_posts_update($_id,$_fid = 0,$_pid = 0 ,$_uid = 0,$title = NULL,$content = NULL)
{
global $tf_handle;
//if pid == 0 -----> mawdo3
$id = (int)$_id;
$fid = (int)$_fid;
$pid = (int)$_pid;
$uid = (int)$_uid;
if($id <=0){
return false;
}
$post = tinyf_posts_get_by_id($id);
if(!$post)
return false;
if ((empty($title)) && (empty($content)) && ($post ->fid == $fid) &&
($post->pid == $pid) && ($post->uid == $uid)){
return false;
}
if($post->pid <= 0){
if($_fid == 0)
{
$_fid = $post ->fid ;
}
$_pid = 0;
}
else
{
$_fid = 0;
if($_pid <= 0){
$_pid = $post -> pid;
}
}
if($_uid <= 0){
$_uid = $post ->uid;
}
$fields = array() ;
$query = 'UPDATE `posts` SET ' ;
if(!empty($title))
{
$n_title = mysqli_real_escape_string($tf_handle, strip_tags($title));
$fields[count($fields)] = "`title` = '$n_title'";
}
if(!empty($content))
{
$n_content = mysqli_real_escape_string($tf_handle,strip_tags($name));
$fields[count($fields)] = "`content` = '$n_content'";
}
$fields[count($fields)] = "`fid` = '$_fid'";
$fields[count($fields)] = "`pid` = '$_pid'";
$fields[count($fields)] = "`uid` = '$_uid'";
$fcount = count($fields);
for($i = 0; $i < $fcount ; $i++)
{
$query .= $fields[$i];
if($i != ($fcount - 1)) // i = 0 that the first element in the array .. 2 will be - 1 last 3shan hwa by3ed el array mn wa7ed :D
$query .=' , ';
}
$query .= ' WHERE `id` = '.$id;
$qresult = mysqli_query($tf_handle, $query);
if(!$qresult)
return false;
else
return true;
}
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
Результат после нажатия на кнопку Сохранить пост является ==> 'Поле'
я ожидал, что он сохранит информацию (пост)
ошибка из
$query = sprintf("INSERT INTO `users` VALUE(NULL,'%d','%d','%d','%s','%s')",$_fid,$_pid,$_uid,$n_title,$n_content);
$qresult = mysqli_query($tf_handle, $query);
if(!$qresult)
{
echo "3";
return false;
}
Я думаю, что функция tinyf_post_add() вызывает это или потому, что я скопировал некоторые функции из моего другого файла API
Конечно, 'tinyf_post_add ($ fid, $ pid, $ uid, $ title, $ content)' вызывает это. Вы можете попробовать отладить код и повторить всюду перед оператором 'return' и идентифицировать каждое эхо с номером. Тогда вы узнаете, что последнее эхо, которое вы видите, привело к его провалу. – fsacer
Основная отладка: никогда не выводить фиксированное (и совершенно бесполезное) сообщение об ошибке, когда БД может СКАЧАТЬ вас, почему это не удалось. 'if (! $ qresult) {die (mysqli_error ($ tf_handle)); } ' –
Во-первых, посмотрите на правильный синтаксис INSERT http://www.w3schools.com/sql/sql_insert.asp, также если вы не хотите вставлять все столбцы, просто укажите те, которые вы хотите в скобках, перед VALUES(). Во-вторых, вы можете использовать функцию 'prepare()' http://php.net/manual/en/mysqli.prepare.php, чтобы правильно ухаживать за SQL-инъекцией. – fsacer