저는 CMS를 구축 중이며 스크립트에서 많이 나타나는 몇 가지 SQL 작업을 처리하는 몇 가지 함수를 작성했습니다.함수 내에서 가변 변수를 생성하십시오.
function execute_sql_query($stmt,$types,$var1,$query_success,$object_name,$sql_action)
{
if(mysqli_stmt_bind_param($stmt, $types, $var1))
{
if(!mysqli_stmt_execute($stmt))
{
echo 'MySQL Execution Error: ' . $object_name . '<br>';
$query_success = FALSE;
echo "<br />";
}
else
{
echo $object_name . ' successfully ' . $sql_action . '<br>';
}
}
else
{
echo 'MySQL Bind Error: ' . $object_name . '<br>';
$query_success = FALSE;
}
}
function sql_close($stmt,$query_success,$mysqli)
{
mysqli_stmt_close($stmt);
if ($query_success)
{
echo 'All changes were successfully saved!<br>';
mysqli_commit($mysqli);
}
else
{
echo 'No changes were made to the database because of detected errors<br>!'
mysqli_rollback($mysqli);
}
}
코드는 스크립트에서 다음과 같이 호출됩니다 : 다음과 같은 기능은 돼있로
mysqli_autocommit($mysqli, FALSE);
$query_success = TRUE;
if($stmt = mysqli_prepare($mysqli, "DELETE FROM galleries WHERE gal_num = ?"))
{
$types = 's';
$object_name = "Galleries";
$sql_action = "deleted";
execute_sql_query($stmt,$types,$gal_del,$query_success,$object_name,$sql_action);
}
sql_close($stmt,$query_success,$mysqli);
지금이 작품 그것은 나에게 많은 타이핑의 지옥을 절약 할 수 있습니다. 나는 이런 종류의 접근법에 대해 단 하나의 문제를 가지고있다.
이 쿼리에는 단 하나의 매개 변수 만 바인딩됩니다. 일부는 데이터베이스 테이블에서 3, 5 또는 12 개의 다른 필드를 변경합니다. 이 함수는 하나만 처리 할 수 있습니다. 쿼리가 그 이상을 처리하는 경우 다른 양의 매개 변수를 바인딩하는 각각에 대해 다른 함수를 작성해야합니다. 그것은 주로 복사 및 붙여 넣기 작업을하지만 일종의이 기능을 퍼팅의 유용성을 부정합니다.
이 유형에 관해서
, 이것은 단순히 문자열이므로 쿼리가 5 개 매개 변수를 결합하면, 나는 단순히 그것을$type = 'sssss';
아니 문제를 제공 할 수 있습니다. 바인딩 될 변수에 대해이 작업을 수행 할 수있는 방법을 찾지 못했습니다. 거기에 어떻게 든 내 함수를 범위 또는 변수의 배열 (아마도 함수 내에서 기능?) 피드를 자동으로 생성됩니다 그래서 나는 이러한 모든 쿼리를 단일 함수 내에서 유지할 수있는 방법이 있나요?
3 개의 매개 변수를 바인딩해야한다고 말하십시오.
$types = 'sss';
$bind_vars = 3;
그리고 함수 내
가 생성 다음과 같습니다 :if(mysqli_stmt_bind_param($stmt, $types, $var1, $var2, $var3))
가이 작업을 수행 할 수 있습니다 나는 그것을 다음과 같은 먹이를? 협조 해 주셔서 미리 감사드립니다.
답장을 보내 주셔서 감사합니다. 나는이 솔루션과 매우 비슷한 배열로 놀고 있었지만 그렇게 할 수는 없었다. 내 문제는 // 뭔가를 수행하는 것입니다. :) 내가 아는 한, mysqli_stmt_bind_param()은 주어진 변수 내에 포함 된 매개 변수를 바인드하는 내장 함수이다. 바인딩해야하는 값의 배열을 제공하는 경우 foreach() 루프에서 올바르게 묶는 방법을 어떻게 말해야합니까? – Insomniaboy
나는 당신을 완전히 오해 한 것 같아, 내 대답을 편집하여 당신에게 가치있는 것을 얻도록 노력할 것입니다. –
굉장합니다. 무리 감사. 이것으로 작동하게 만들었습니다. – Insomniaboy