小妹是php新手
最近想要試著寫一個搜尋程式
主要是藉由php作為媒介連結android和mySQL
不過卻卡在我的php一直無法成功判讀SQL語法
以下是我主要問題程式片段:
(in java)
try {
String result = DBConnector.executeQuery("SELECT*FROM user where zip = 'newzip' ");
System.out.println(result);(php語法)
<?php
$db = mysql_pconnect("localhost","root","1234");mysql_query("SET CHARACTER SET 'UTF8';");
mysql_query("SET NAMES UTF8;");
mysql_query("SET CHARACTER_SET_CLIENT=UTF8;");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8;");
mysql_select_db("food");$sql = $_POST["query_string"];$res = mysql_query($sql);
while($r = mysql_fetch_assoc($res))
$output[] = $r;print(json_encode($output));
mysql_close();
?>這是我的錯誤訊息:
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in <b>C:\AppServ\www\AndroidConnectDB\android_connect_db.php</b> on line <b>13</b><br />
我有將java中的語法直接在phpmyadmin中執行
(即SELECT*FROM user where zip = 'newzip')
是可以正確找到該筆符合條件的資料
但是不知道為什麼 透過java寫入至php中去呼叫mySQL執行時卻總是傳回錯誤
上網爬過很多文
有試著去修正過編碼的問題(SET NAMES UTF8;)
也有去php.ini修改過 magic_quotes_gpc = On
但仍舊回傳null以及錯誤訊息
但是我將它改成
SELECT*FROM user where id=1 時
是可以正確執行的00"
所以再猜想會不會是單引號引起的問題
也有將它改成
SELECT*FROM user where zip = /'newzip/'
卻仍舊不見好轉ˊˋ想要請問各位大大是否有解決的方法?ˊˋ

解决方案 »

  1.   

    猜测是没有用的,需要看到出错时的错误信息
    $res = mysql_query($sql) or die(mysql_error());
    因为你给出的错误信息是
    mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource 
    即传递给 mysql_fetch_assoc 的不是有效的 MySQL 资源,所以要逐步向上查找
      

  2.   

    樓上大哥您好~!> <
    我的mtsql_error顯示:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'newzip\'' at line 1
    所以這是表示我的字元輸入部分有問題嗎?
    那要怎麼調整才是正確的呢?
    我有試過將它改成 SELECT*FROM user where zip = \'newzip\'
    但是一樣錯誤ˊˋ
      

  3.   

    你不觉得应该是这样吗?
    SELECT * FROM user where zip = 'newzip'
      

  4.   

    我有試過這樣寫了
    但是會顯示一樣的錯誤@@
    SELECT * FROM user where id = 1
    這樣可以正常執行
    但是若改成指定其他欄位資料時就不行了ˊˋ
      

  5.   

    关闭魔术引号,修改php.ini magic_quotes_gpc = Off
    或者临时对传入字符串反转义 $sql = stripslashes($_POST["query_string"]); 也可以应付过来