2016-12-07 3 views
0

안녕하세요 저는 값 (의견)을 표에 삽입하려고하는 초보 프로그래머입니다. 이전에 삽입 기능을 완료했지만 이번에는 값이 삽입되지 않습니다. 삽입 된 값 중 하나가 의심됩니다. now()이 문제의 원인입니다. 실패 삽입 후 var_dump(ini_get('error_log'));은 브라우저에 표시 될 때 string(0) ""을 생성했습니다. I는 DATE_TIME as shown here AND herenow()의 열 값을 편집PHP에 값을 phpmyadmin에 삽입 할 수 없습니다. 오류 : 문자열 (0) ""

<?php 

header("Access-Control-Allow-Origin: *"); 

header("Content-Type: application/json; charset=UTF-8"); 

error_reporting(E_ERROR); 

try{ 
    $conn = new mysqli("localhost", "XXXXXXXX_XXX", "XXXXXXX", "XXXXXXX"); 
    $vendorid = $_GET["vendorid"]; 
    $userid = $_GET["userid"]; 
    $comment = $_GET["comment"]; 

    $query = "insert into vendorcomments (comment, commentdate, vendorid, userid) 
    values ('" . addslashes($comment) . "', now() ,'" . addslashes($vendorid) . "','". addslashes($userid)."')"; 

     $result = $conn->query($query); 

     if (!$result){ 
// unsuccessful insert 
//$json_out = "[" . json_encode(array("result"=>0)) . "]"; 
    var_dump(ini_get('error_log')); 

} 

     else { 
$json_out = "[" . json_encode(array("result"=>1)) . "]"; 
} 

     echo $json_out; 

     $conn->close(); 
} 

catch(Exception $e) { 
    $json_out = "[".json_encode(array("result"=>0))."]"; 
    echo $json_out; 
} 
?> 

newcomment.php.

추가 참고 사항 :
1) 보낸 매개 변수는 올바른 값, 사용자 ID, 공급 업체 ID 및 모든 값을 보냈 음을 요청하는 것입니다.
2) xmlhttp.status == 200!
3) 내 vendordetails 스키마 :

-- phpMyAdmin SQL Dump 
-- version 4.3.7 
-- http://www.phpmyadmin.net 
-- 
-- Host: XXXXXXXXXXXXX 
-- Generation Time: Dec 07, 2016 at 08:33 PM 
-- Server version: 5.7.15 
-- PHP Version: 5.4.45-0+deb7u4 

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
SET time_zone = "+00:00"; 


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 

-- 
-- Database: `XXXXXXXXX` 
-- 

-- -------------------------------------------------------- 

-- 
-- Table structure for table `vendorcomments` 
-- 

CREATE TABLE IF NOT EXISTS `vendorcomments` (
    `comment` varchar(300) COLLATE utf8_unicode_ci NOT NULL, 
    `commentdate` datetime(3) NOT NULL, 
    `vendorid` varchar(20) COLLATE utf8_unicode_ci NOT NULL, 
    `userid` varchar(50) COLLATE utf8_unicode_ci NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

-- 
-- Dumping data for table `vendorcomments` 
-- 

INSERT INTO `vendorcomments` (`comment`, `commentdate`, `vendorid`, `userid`) VALUES 
('eBay is working and its amazing, to be able to gain cashback.', '0000-00-00 00:00:00.000', '2', 'jimmy'); 

-- 
-- Indexes for dumped tables 
-- 

-- 
-- Indexes for table `vendorcomments` 
-- 
ALTER TABLE `vendorcomments` 
    ADD UNIQUE KEY `vendorid` (`vendorid`), ADD UNIQUE KEY `userid` (`userid`); 

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
/*!40101 SET [email protected]_COLLATION_CONNECTION */; 
+0

코드를 복제하려고했기 때문에 다른 회원에 의해 기본 키는 내가 삽입 할 수로 설정되어 있는지 발견 [SQL- 주입] (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). Prepared, Parameterized Queries를 사용하십시오. –

답변

0

내 스키마를 읽고 사용자 ID와 VendorID 값이 실제로에 취약 나는 기본 키

0

이 삽입 쿼리에서 작동 테이블에 대한 트리거를 만들어보십시오.

CREATE TRIGGER `triggername` BEFORE INSERT ON `vendorcomments` FOR EACH ROW SET NEW.commentdate = NOW();

그럼 당신은 단순히 타임 스탬프를 삽입하지 않고도 쿼리를 실행할 수 있습니다. :)

관련 문제