2013-07-09 2 views
0

이 질문은 이미 여러 번 질문했다고 말할 수 있습니다! 네 말이 맞아.하지만 그 말은 해줄 수 없어. 내가 삽입 된 데이터 및 삽입 이벤트에 트리거를 사용하여 데이터베이스에 두 개의 VAR를 삽입하려고 , 코드는 여기에 있습니다 :트리거 이벤트에 데이터베이스에 php 변수를 삽입하십시오

<html> <body > 
<?php 

$s = $_POST['sent']; 
echo "Entered sentence : $s"; 
$a = array(); 
$b = array(); 
if (preg_match_all('/[^=]*=([^;@]*)/', shell_exec("/home/technoworld/Videos/LinSocket/client '$s'"), $matches)) 
//if (preg_match_all('/[^=]*=([^;@]*)/', shell_exec('/home/technoworld/Videos/LinSocket/client '.escapeshellarg($s)), $matches)) 
{ 
    $a[] = (int) $matches[1][0]; //optionally cast to int 
    $b[] = (int) $matches[1][1]; 
} 

$x = (int) $matches[1][0]; 
$y = (int) $matches[1][1]; 

$p=10; 
$q=20; 
echo $x; 
echo "<br/>"; 
echo $p; 
echo "<br/>"; 


//---------------DB stuff -------------------- 

$con = mysqli_connect('127.0.0.1:3306', 'root', 'root', 'test'); 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: ".mysqli_connect_error(); 
} 


$sql2 = "CREATE TRIGGER MysqlTrigger AFTER INSERT ON table1 FOR EACH ROW BEGIN INSERT INTO temp VALUES (NEW.sent,'".$x."','".$p."');"; 
mysqli_query($con,$sql2); 

$sql1 = "INSERT INTO table1 (sent)VALUES('$_POST[sent]')"; 

if (!mysqli_query($con, $sql1)) { 
    die('Error: '.mysqli_error($con)); 
} 
echo "1 record added"; 
mysqli_close($con); 

?> 
</html > </body > 

데이터는 successfuly 표에 삽입 트리거 이벤트도 작동합니다. 그것은이 0을 삽입

(NEW.sent,'$x','$p');"; 
(NEW.sent,"$x","$p");"; 

및 기타 그러나 모든 시간 : 내가 함께 노력 웹에 주어진 다양한 솔루션을 살펴보면 0 - 두 나머지 VAR는 항상 "ZERO"로 삽입하면서 그러나 트리거에 NEW.sent가 삽입됩니다 두 값.

$ x 및 $ p의 데이터 유형은 정수이고 표에서이 두 매개 변수에 대해 int 값을 사용했습니다. 이슈가 뭐야?

+0

그 변수의 데이터베이스 필드 INT 당신이 작은 따옴표없이 삽입하지 않아야하는 경우? –

+0

@ TolgaEvcimen : 그렇습니다.하지만이 경우에는 '0'이 삽입됩니다. 나는 PHP에 익숙하지 않으므로 여기에있는 문제에 대해 많이 알지 못한다! – user123

답변

1

내가 제안입니다 :

(NEW.sent, ".$x.", ".$p.");"; 
+0

이것은 또한 작동하지 않습니다! 문제는 다른 것입니다. 위의 PHP 파일에서 트리거 코드를 만들었을 때 잘 작동했습니다. 트리거를 생성하는 부분은 MySQL 트리거입니다. DELIMITER $$ CREATE /* [DEFINER = {사용자 | CURRENT_USER}] */ TRIGGER test'.'MysqlTrigger'''ON INSERT 후의 각 ROW FOR test'.'table1' 이 임시 값으로 \t INSERT (New.sent '$의 X', '$의 y'를 BEGIN); END $$ DELIMITER;'. 여기 어떻게 '$ x'와 '$ y'를 검색 할 수 있습니까? – user123

관련 문제