Очень странное поведение PDO-> bindparam php - PullRequest
0 голосов
/ 28 сентября 2011

Приведенный ниже запрос работает хорошо и работает достаточно быстро для того, что он делает. Однако это демонстрирует очень странное поведение, описанное ниже.

Однако в PHP кажется, что он сам решает, для каких идентификаторов он будет работать. Я уверен, что код правильный. Я использую PDO в PHP и привязываю переменные по мере необходимости.

Так, например, если я передам его author_id 600, он будет работать, но если я передам его author_id 2, он не будет работать и не вернет никаких записей. Но если я повторяю запрос, вставляю его в MySQL и запускаю, он работает для обоих идентификаторов. Казалось бы, PDO не может связать переменную на некоторых идентификаторах. Я повторил переменную id, и она действительно содержит правильный идентификатор.

Кто-нибудь еще испытывал такое поведение? Я нахожу это очень, очень необычным.

SELECT
GROUP_CONCAT(a.author_id) AS author_ids
FROM
references_final AS rf
INNER JOIN (reference_authors AS ra INNER JOIN authors_final AS a ON (ra.author_id = a.author_id))
ON (rf.reference_id = ra.reference_id)
GROUP BY rf.reference_id HAVING :author_id IN (author_ids) 

1 Ответ

0 голосов
/ 02 декабря 2011

Эй, у меня та же проблема со значением BindParam и идентификатором в моем заявлении PDO

$retrieveUsersToken = $dataBase->prepare('SELECT TheUsersTable.token AS token, TheUsersTable.myID AS myID, 
FROM TheUsersTable INNER JOIN TheCategoryListTable ON TheUsersTable.myID = TheCategoryListTable.userID 
WHERE TheUsersTable.myID != :userID AND TheCategoryListTable.category = :category');

$retrieveUsersToken->bindParam( ':category', $_POST['category'], PDO::PARAM_STR);
$retrieveUsersToken->bindParam( ':userID', $_POST['creatorID'], PDO::PARAM_INT);

myID! = UserID никогда не работает.Внутреннее соединение создает проблемы в обеих наших ситуациях.

Это не совсем ответ, но, возможно, binValue работает лучше.

...