카테고리 없음

[PHP] PHP / SQL-mysqli_result 클래스의 개체를 문자열로 변환 할 수 없습니다.

행복을전해요 2021. 2. 24. 20:56

쿼리에서 직접 사용하는 대신 mysqli_result를 가져 오십시오.

$my_id_query=mysqli_query($con,"SELECT `id` FROM `users` WHERE (`username`='$myusername')");
//Fetch result 
$my_id_array=mysqli_fetch_assoc($my_id_query);
$my_id=$my_id_array['id'];
//Cast this into int to protect yourself against sql injection
$user=(int)$_GET['user'];
$check_conv=mysqli_query($con,"SELECT `hash` FROM `message_g` WHERE (`user_one`='$my_id' AND 
`user_two`='$user') OR (`user_one`='$user' AND `user_two`='$my_id')");
 if(mysqli_num_rows($check_conv) == 1){
 

-------------------

mysqli_query

객체를 반환합니다. 개체를 인쇄 할 수는 없습니다. mysqli_query 객체의 결과로 수행 할 작업을 알아 보려면 mysqli 설명서를 읽어야합니다.

http://us1.php.net/manual/en/mysqli.query.php

-------------------
여기에 문제가 있습니다. 여기에서 쿼리를 수행하고 $ my_id에 할당하여 열에서 실제 값을 얻는다고 생각하지만 그렇지 않습니다.

$my_id=mysqli_query($con,"SELECT `id` FROM `users` WHERE (`username`='$myusername')");

그런 다음 두 번째 호출에서 문자열로 보간하려고합니다.

$check_conv=mysqli_query($con,"SELECT `hash` FROM `message_g` WHERE (`user_one`='$my_id' AND `user_two`='$user') OR (`user_one`='$user' AND `user_two`='$my_id')");

작동하려면 $ my_id가 문자열이어야하지만 그렇지 않습니다. 개체입니다.


또한 여기서 문제와 관련이 없으므로

외부 변수로 SQL 문을 작성하면 SQL 주입 공격에 노출 될 수 있습니다.

또한 "O'Malley"라는 이름과 같이 작은 따옴표가있는 입력 데이터는 SQL 쿼리를 날려 버립니다. 웹 앱을 보호하기 위해 PDO 모듈과 함께 매개 변수화 된 쿼리를 사용하는 방법에 대해 알아보십시오. 내 사이트

http://bobby-tables.com/php

에는 시작하는 데 도움이되는 예제가 있으며이

질문

에는 자세한 예제가 많이 있습니다.

출처
https://stackoverflow.com/questions/22080090