-2
나는 이것을 작동 시키려고 몇 시간 동안 노력했습니다. 나는이 점점 계속PDO PHP MYSQL 명명 된 위치 매개 변수가 섞여 있습니다.
<?php
require_once('inc.connect.php');
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_REQUEST))
{
$type = array_keys($_REQUEST)[0];
$value = $_REQUEST[$type];
if($value === null)
{
$where_like = null;
}
else
{
$where_like = ' WHERE ' . $type . '_name LIKE ?';
}
$db = new PDO('mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DBNAME . ';charset=UTF8', MYSQL_USERNAME, MYSQL_PASSWORD);
$sql_statement = 'SELECT :' . $type . '_id, :' . $type . '_name FROM report_' . $type . $where_like;
$sql_prepare = $db->prepare($sql_statement);
if(!(is_null($where_like))) $sql_prepare->bindValue(1, '"%' . $value . '%"', PDO::PARAM_STR);
try{
while($sql_result = $sql_prepare->execute())
{
$return[$sql_result[$type . '_id']] = $sql_result[$type . '_name'];
}
$return_JSON = json_encode($return);
}
catch(PDOException $exception){
return $exception->getMessage();
}
echo "exception: ".$exception;
}
}
...
경고 : PDOStatement :: 실행() : SQLSTATE는 [HY093] : 잘못된 매개 변수 번호 :라는 이름의 혼합 및 위치 매개 변수
문 준비는 다음과 같이 사용되지 않습니다. 미리 정의 된 쿼리를 사용하고 런타임에 생성하지 마십시오. 튜토리얼을보고 전체 코드를 다시 작성하십시오. –
왜 안 되니? 나는 그들이 이런 식으로 일반적으로 사용되지는 않는다는 것을 알고 있지만 동적으로 쿼리를 생성하는 데는 아무런 문제가 없다고 생각합니다. –
잘못된 것이 없다면 왜 작동하지 않습니까? 미리 정의 된 쿼리를 사용하는 것이 가장 좋습니다. 그것은 분명하고, 이해할 만하 며, 지금 당장 알 수있는 것처럼 고통스럽지 않습니다. –