쿼리에서 직접 사용하는 대신 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