(주로 작동하는) 부품 검색 시스템을 사용하려고하는데, PHP var에서 일부 문자가 손실되는 경우가 있습니다. 입력란에 1234를 입력하면 텍스트 상자에 입력 한 전체 숫자가 항상 표시됩니다.동적 PHP mysql 조회에서 입력 문자를 분실하고 있습니다.
그러나 결과 부분에는 1234로 시작하는 숫자가 초 단위로 표시되고 4 , 그러면 3이 풀릴 것이고, 그러면 2가 풀릴 것이고, 그 다음에는 1로 시작하는 partno가 나타나고 그것은 남아있을 것입니다. 대부분의 경우 시간이 너무 빠르므로 한 번에 모든 숫자가 떨어지는 것처럼 보이지만 한 번에 한 번에 하나씩 실제 닫기와 놓기를 봅니다. 화면
가출력 -
PHP의 VAR의 idxno가
1 (이 번호 1234 예에 불과 도시 1,234 시험
위한 JS VAR PARTNO 쇼 1,234
JS VAR idxno 난으로부터 무작위 PARTNO의 것을 사용 도시 3 ~ 20 자이고, 문자를 버리면 항상 첫 번째 문자가 입력됩니다.)
4를 제거하려면 백 스페이스 키를 사용하면 23이 돌아오고 4를 다시 입력하면 PHP var idxno가됩니다. 꼭 1234를 보여줘야합니다.
서버를 다시 시작하면 부품 번호를 입력 할 때마다, 때로는 두 번째 및 세 번째로 입력 할 때마다 항상 발생합니다. 그런 다음 10-20 개의 조회가 잘 수행 된 다음 다시 수행됩니다. .
빈 데이터베이스에서이 쿼리를 실행하면 정상적으로 작동하며 숫자를 삭제하지 않습니다.
'ORDER BY'절을 제거하면 첫 번째 문자를 제외한 모든 문자가 거의 항상 삭제됩니다. 나는이 기본 코드를이 프로그램의 첫 번째 초안에서 실행하고 있으며, 모든 데이터베이스는 별도의 데이터베이스에 제조되어 있으며 훌륭하게 작동합니다. 모든 데이터베이스 파일을 하나의 데이터베이스 파일로 결합하려고하는데, 문제가 시작될 때.
별도의 제조사를 통해 가장 큰 가격표는 약 150,000 행 정도입니다.
모든 제조사가 결합 된 제품은 현재 약 75 만 줄이고, 완료되면 1,000,000 개가 넘는 행이 될 것입니다.
나는 실행하고 있습니다 :
데비안 위지 7.2
아파치 버전 2.2.22
MySQL 버전 5.5.38
PHP 버전 5.4.4-14 + deb7u14
내가 작성하는 버추얼 서버를 사용하고 있습니다 테스트 코드를 제공하지만,이 코드를 lan의 실제 서버에 넣었습니다. 정확히 동일합니다.
나는이 문제에 대한 충분한 정보를 얻었 으면 좋겠다. 이것은 실제 프로그램에서의 나의 첫 번째 시도이며, 일어나는 일을 해결할 방법을 찾지 못한다. 나는 몇 달 동안 그리고 처음으로이 일을 해왔다. 마침내 도움을 요청하기로 결정했습니다.
내가 도와 드릴 수있는 도움을 주셔서 감사합니다.
index.php를
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="styles.css">
<script type="text/javascript" src="js_php/jquery-1.11.1.js"></script>
<script type="text/javascript">
var npage = 0;
function part_lookup(cnt){
var action = "lookup";
var partno = document.getElementById("partno").value;
var idxno = partno.replace(/[^a-zA-Z0-9%]/g,'');
if (cnt == 'next') {npage = npage + 15;}
else if (cnt == 'prev') {npage = npage - 15;}
else {npage = 0;}
if (npage < 0) {npage = 0;}
$.post("js_php/partlookup.php", {action:action, idxno:idxno, npage:npage},
function(data){$("#part_data").html(data);});
}
</script>
</head>
<?php
$whereami='home';
// include("page_setup.php");
?>
<!--body--> <!--code will not validate w3c with this body tag, says tag already open ??-->
<div id="lookup">
<div>
<input id="Prev" type="button" value="Previous Page" onclick="part_lookup('prev')">
<input id="partno" type="text" name="partno" maxlength="20" autocomplete="off" autofocus onclick="this.value = ''" onkeyup="part_lookup()">
<input id="Next" type="button" value=" Next Page " onclick="part_lookup('next')">
</div>
</div>
<div id="part_data"></div>
</body>
</html>
partlookup.PHP
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
include("db_connect.vars.php");
// Make a MySQLi Connection
$db_connect = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$db_connect) {die('Connect Error ('.mysqli_connect_errno().') '.mysqli_connect_error());}
/*********************************************************************/
$idxno = $_POST['idxno'];
$page = $_POST['npage'];
echo "idxno = ".'<b>'.$idxno.'</b><br/>';
$result = mysqli_query($db_connect,
"SELECT PriceList.*, Inventory.instk AS instk, Inventory.ovrstk AS ovrstk, Inventory.used AS used
FROM PriceList
LEFT JOIN Inventory ON PriceList.mfg = Inventory.mfg
AND PriceList.idxno = Inventory.idxno
WHERE PriceList.idxno LIKE '$idxno%'
ORDER BY PriceList.idxno
LIMIT $page,15");
mysqli_close($db_connect);
?>
OK, 나는 제프, 나는 희망
mysql> SET GLOBAL general_log = 'ON';
Query OK, 0 rows affected (0.00 sec)
을 제안하고 '/var/lib/mysql/debian-7.log'파일 바라보며 한,이 결과
입니다
141012 18:07:30 148 Connect [email protected] on lawn2
148 Query
149 Connect [email protected] on lawn2
149 Query
149 Quit
150 Connect [email protected] on lawn2
150 Query
150 Quit
151 Connect [email protected] on lawn2
151 Query
151 Quit
141012 18:07:31 148 Quit
가 151 종료 후 148 종료가,
그래서 나는 partlookup.php 파일의 끝에 mysqli_close($db_connect);
을 추가했다.
하지만 차이점은 없지만 여전히 동일한 문제가 있습니다.
로그 파일에 sql 문을 써서 문제가 없는지 확인합니다. – jeff
추측 :이 호출을 'lookup 대신 상수를 반환하려면 function (data) {$ ("# part_data") .html (data); 그것이 올바르게 사용되지 않는 것은 의심 스럽습니다. – ethrbunny
이 코드'function (data) {$ ("# part_data") .html (data);'은 현재 PHP 파일에서 idxno의 값을 제외하고는 어떤 데이터도 반환하지 않습니다. 현재 varx idxno를 partlookup.php에 전달하고 mysql 쿼리를 실행 중이며 idxno의 현재 값을 제외하고는 테스트 할 데이터가 반환되지 않습니다. – JimmyA