mysql_init(&my_connection); 
if (mysql_real_connect(&my_connection, "localhost", "root", 
"111111", "zl", 0, NULL, 0)) { 
printf("Connection success\n"); res = mysql_query(&my_connection, "SELECT username, password FROM user WHERE username = ‘userName’");//问题在这里 
希望这里的userName是个变量,它可以根据客户端传输的用户名的不同而不同。但是现在这么写查询语句结果不正确。请问,应该如何书写呢?谢谢啦!~

解决方案 »

  1.   


    $conn = mysql_connect("192.168.1.133", "root", "22582258") or
            die("Could not connect: " . mysql_error()); $program_char = "utf8"; $conn.mysql_select_db("test");
    //$conn.mysql_query('SET @@character_set_results = "'.$program_char.'"');

    mysql_set_charset($program_char,$conn); 
    $charset = mysql_client_encoding($conn);
    printf ("current character set is %s <br>", $charset);
        $result = mysql_query("SELECT id, task_no,pack_path FROM tb_workplan where id = 1 ",$conn);
        while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
            printf ("ID: %s <br> task_no: %s  <br> pack_path :%s <BR>", $row["id"], $row[1], $row["pack_path"]);  
        }
        $conn.mysql_free_result($result);
    $conn.mysql_close();楼主可以参考上面的内容。
      

  2.   

    就是变量累加的问题
    "SELECT username, password FROM user WHERE username ='"+
    userName+"'")
      

  3.   

    像楼上这么写 gcc中说error:invalid operands to binary +
      

  4.   

    你将"SELECT username, password FROM user WHERE username ='"+
    userName+"'"
    赋值一个变量试试
      

  5.   

    可能原来说的不清楚 
    也就是关于c语言中mysql的select语句变量查询问题程序如下:
    #include <stdlib.h>
    #include <stdio.h>
    #include "mysql/mysql.h"
    MYSQL my_connection;
    MYSQL_RES *res_ptr;
    MYSQL_ROW sqlrow;
    char *userName="z";//!!!
    void display_row();
    int main(int argc, char *argv[]) {
       int res;
       mysql_init(my_connection);  
       if (mysql_real_connect(my_connection, "localhost", "root", 
                                                  "111111", "zl", 0, NULL, 0)) {
       printf("Connection success\n");
       
       res = mysql_query(my_connection, "SELECT username,password FROM user where='userName'");//!!!
       if (res) {
          printf("SELECT error: %s\n", mysql_error(my_connection));
       } else {
          res_ptr = mysql_use_result(my_connection);
          if (res_ptr) {
             while ((sqlrow = mysql_fetch_row(res_ptr))) {
                printf("Fetched data...\n");
         display_row();
             }
             if (mysql_errno(my_connection)) {
                printf("Retrive error: %s\n", mysql_error(my_connection));
             }
          }
          mysql_free_result(res_ptr);
       }
       mysql_close(my_connection);
       } else {
          fprintf(stderr, "Connection failed\n");
          if (mysql_errno(my_connection)) {
             fprintf(stderr, "Connection error %d: %s\n",
                      mysql_errno(my_connection), mysql_error(&my_connection));
          }
       }
       return EXIT_SUCCESS;
    }
    void display_row() {
       unsigned int field_count;
       field_count = 0;
       while (field_count < mysql_field_count(my_connection)) {
          printf("%s ", sqlrow[field_count]);
          field_count++;
       }
       printf("\n");
    }运行之后程序说明可以连接成功,但是却无关于z的用户名输出,请问大家这是为什么呢?应该如何修改? 
      

  6.   

    你的SQL语句
    SELECT username,password FROM user where='userName'userName是变量吧,你要将userName->z
    变量="SELECT username, password FROM user WHERE username ='"+
    userName+"'" 
    修改为你的语言格式
      

  7.   

    #include <stdlib.h> 
    #include <stdio.h> 
    #include "mysql/mysql.h" 
    MYSQL my_connection; 
    MYSQL_RES *res_ptr; 
    MYSQL_ROW sqlrow; 
    char *userName="z";//!!! 
    void display_row(); 
    int main(int argc, char *argv[]) { 
      int res; 
      mysql_init(my_connection);  
      if (mysql_real_connect(my_connection, "localhost", "root", 
                                                  "111111", "zl", 0, NULL, 0)) { 
      printf("Connection success\n"); 
      
      char *sSQL;
      sprintf(sSQL,"SELECT username,password FROM user where='%s'",userName);
      res = mysql_query(my_connection, sSQL); // changed by ACMAIN
      if (res) { 
          printf("SELECT error: %s\n", mysql_error(my_connection)); 
      } else { 
          res_ptr = mysql_use_result(my_connection); 
          if (res_ptr) { 
            while ((sqlrow = mysql_fetch_row(res_ptr))) { 
                printf("Fetched data...\n"); 
        display_row(); 
            } 
            if (mysql_errno(my_connection)) { 
                printf("Retrive error: %s\n", mysql_error(my_connection)); 
            } 
          } 
          mysql_free_result(res_ptr); 
      } 
      mysql_close(my_connection); 
      } else { 
          fprintf(stderr, "Connection failed\n"); 
          if (mysql_errno(my_connection)) { 
            fprintf(stderr, "Connection error %d: %s\n", 
                      mysql_errno(my_connection), mysql_error(&my_connection)); 
          } 
      } 
      return EXIT_SUCCESS; 

    void display_row() { 
      unsigned int field_count; 
      field_count = 0; 
      while (field_count < mysql_field_count(my_connection)) { 
          printf("%s ", sqlrow[field_count]); 
          field_count++; 
      } 
      printf("\n"); 
      

  8.   

    按照上面这位仁兄的程序编译 GCC提示error:incpmpatible type for argument 1 of 'mysql_query' 
    还是不行啊
      

  9.   

    捕获错误方法 OR 在执行前COUNT(*)如为0则提示
      

  10.   

    对空集先判断一下。 if (res) { 
          printf("SELECT error: %s\n", mysql_error(my_connection)); 
      } else { 
    res_ptr = mysql_use_result(my_connection); 
    if (res_ptr) { 
    if ((sqlrow = mysql_fetch_row(res_ptr)))
    printf("not record Fetched ...\n"); 
    else {
    printf("Fetched data...\n"); 

    while ((sqlrow = mysql_fetch_row(res_ptr))) { 
    printf("Fetched data...\n"); 
    display_row(); 

    }
    if (mysql_errno(my_connection)) { 
    printf("Retrive error: %s\n", mysql_error(my_connection)); 


    mysql_free_result(res_ptr); 
      } 
      

  11.   

    好像不对吧 要这么写 那么while ((sqlrow = mysql_fetch_row(res_ptr))) { 
    将永远不被执行啊 现在就是想知道如果查询的数据在数据不存在的时候 
    靠什么判断数据库中不存在这个值?
    是mysql_use_result()的返回值还是mysql_fetch_row()的?
      

  12.   

    mysql_use_result()只要select语句执行正常则返回非NULL, 哪怕这个SQL语句的结果是一个空集。mysql_fetch_row()当记录集中没有下一条记录时返回NULL.具体可在C API参考手册中有详细的说明。