4 시간 동안 검색 했는데도이 함수가 0을 반환하는 이유를 찾지 못했습니다. 어제 작동했지만 이제는 스크립트에 몇 가지 변경 사항을 적용했습니다. 내 주제와 같은 주제가 많지만 정답을 찾을 수 없습니다.mysql_insert_id()는 항상 0을 반환합니다.
내 index.php에는 4 개의 텍스트 입력이 있습니다. 내 update.php 파일 (POST 메소드)로 캡처합니다. 여기
는 update.php
<?php
include "db.php";
connect_to_db();
require_once('recaptchalib.php');
$privatekey = "N/A";
$resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
echo 'Tekst sa slike je pogresno prepisan. Vracamo Vas natrag.';
echo '<meta http-equiv="refresh" content="5; URL=../">';
} else {
$pic1 = $_POST["pic1"];
$p1 = htmlspecialchars($pic1);
$pic2 = $_POST["pic2"];
$p2 = htmlspecialchars($pic2);
$html = $_POST["html"];
$h = htmlspecialchars($html);
$link = $_POST["link"];
$l = htmlspecialchars($link);
$id = mysql_insert_id();
$query = "INSERT INTO `koraci` (`id`, `p1`, `p2`, `h`, `l`) VALUES ({$id}, '{$p1}', '{$p2}','{$h}','{$l}')";
$result = mysql_query($query) or die(mysql_error());
}
include_once("config.php");
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1250" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title><?php echo $title; ?></title>
<script type="text/javascript" src="cufon-yui.js"></script>
<script type="text/javascript" src="font.js"></script>
<script type="text/javascript">
Cufon.set('fontSize', '20px').replace('body');
</script>
</head>
<body>
<?php include_once("analytics.php"); ?>
<h1><?php echo $title; ?></h1>
<br />
<textarea name="one"><center><img src="<?php echo $p1; ?>" id="Like"></center></textarea>
<br />
<textarea name="two"><iframe width=800 height=500 frameborder=0 src="<?php echo $id; ?>"></iframe></textarea>
<br />
</body>
</html>
의 조각 그리고 내 db.php를에 있습니다
<?php
define("DB_SERVER", "N/A");
define("DB_USER", "N/A");
define("DB_PASS", "N/A");
define("DB_NAME", "N/A");
function connect_to_db() {
$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die("There was an error connecting to the database: " . mysql_error());
mysql_select_db(DB_NAME);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
return $connection;
}
?>
N/A는 I 자세한 사항 점유율을 늘 의미한다.
내 db.sql :
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+01:00";
CREATE TABLE IF NOT EXISTS `koraci` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`p1` varchar(255) NOT NULL,
`p2` varchar(255) NOT NULL,
`h` varchar(255) NOT NULL,
`l` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `koraci` (`id`, `p1`, `p2`, `h`, `l`) VALUES
(1, 'SOMETHING', 'SOMETHING', 'SOMETHING', 'SOMETHING');
그래서 basiclly,이 DB에 모든 전송이 (내가 phpMyAdmin을 함께 볼 수 있습니다).
문제는 항상 메신저가 0 인 ID로 반환됩니다!
오류를 표시하지 않습니다 (PHP 또는 MySQL).
[15시 41분] 나는에 update.php 업데이트 한 :
if (!$resp->is_valid) {
echo 'Tekst sa slike je pogresno prepisan. Vracamo Vas natrag.';
echo '<meta http-equiv="refresh" content="5; URL=../">';
} else {
$pic1 = $_POST["pic1"];
$p1 = htmlspecialchars($pic1);
$pic2 = $_POST["pic2"];
$p2 = htmlspecialchars($pic2);
$html = $_POST["html"];
$h = htmlspecialchars($html);
$link = $_POST["link"];
$l = htmlspecialchars($link);
$query = "INSERT INTO `koraci` (`id`, `p1`, `p2`, `h`, `l`) VALUES ({$id}, '{$p1}', '{$p2}','{$h}','{$l}')";
$result = mysql_query($query) or die(mysql_error());
$id = mysql_insert_id();
}
?>
그리고 지금 나는이 오류가 : 는 "당신은 당신의 SQL 구문에 오류가 있습니다를, MySQL의에 해당하는 설명서를 확인 올바른 구문을 사용할 서버 버전 "
[16:04] 쿼리 후 ID를 설정하면 ID가 쿼리에 포함되지 않습니다. 나는 이것에 대해 이야기하고있다 :
INSERT INTO `koraci` (`id`, `p1`, `p2`, `h`, `l`) VALUES (, 'SOMETHING', 'SOMETHING','SOMETHING','SOMETHING')
코드는 SQL 삽입에 취약합니다. 'htmlspecialchars' 대신에 매개 변수화 된 쿼리를 사용하십시오. –
데이터를 탈출하지 않으면 해킹 당할 수 있습니다. MySQL_ * 함수도 사용하지 마십시오. –
내가 말한 것처럼 : 매개 변수화 된 쿼리 (MySQLi 또는 PDO 검색)를 사용하십시오. –