PHP,查询失败

时间:2017-03-19 12:33:28

标签: php

我有这个代码和变量" p1"是一个int。调试器显示它正确地获取值。但我得到了#34;查询失败"。数据库值设置为int。有什么帮助吗?

<?php
    session_start();
    include 'connect_db.php'; 
    $con = $_SESSION['connection'];

        $query = "SELECT * FROM class WHERE id_class ='".$_GET['p1']."'";
        $result=@mysql_query($con,$query) or die('Error, query1 failed');
        $num_result=mysqli_num_rows($result);


        if($num_result>0){

                $insert_query= " INSERT INTO user_program SET 
                                            id_class='".$_POST['id_class']."'
                                            WHERE id_user='".$_SESSION['id_user']."'";

        $insert=mysqli_query($con,$insert_query) or die('Error,query2 failed');


            if ($insert) {
                echo '<html><meta charset="UTF-8"><script language="javascript">alert("ok!"); document.location="add_classes_form.php";</script></html>';
            }
            else {
                echo '<html><meta charset="UTF-8"><script language="javascript">alert("not ok.")</script></html>';
                echo '<script language="javascript"> document.location="add_classes_form.php";</script>';
                exit();
            }   
        }

&GT;

1 个答案:

答案 0 :(得分:-1)

首先,您不能将#include <stdio.h> #include <string.h> #include <inttypes.h> #include <string.h> //#include <math.h> typedef unsigned char poly8; typedef unsigned long long poly8x64[8]; void intToBits(unsigned k, poly8 nk[8]) { int i; for(i=7;i>=0;i--){ nk[i] = (k%2); k = (int)(k/2); } } void poly8_bitslice(poly8x64 r, const poly8 x[64]) { //TODO int i; for(i=0;i<64;i++){ poly8 xb[8]; intToBits(x[i], xb); int j; long long row; for(j=0;j<8;j++){ row = row + x[j]; } printf("row=%d \n", row); } } int main() { poly8 a[64], b[64], r[64]; poly8x64 va, vb, vt; int i; FILE *urandom = fopen("/dev/urandom","r"); for(i=0;i<64;i++) { a[i] = fgetc(urandom); b[i] = fgetc(urandom); } poly8_bitslice(va, a); poly8_bitslice(vb, b); fclose(urandom); return 0; } mysql混合,就像您在示例中看到的那样。

mysqli已弃用但我会举例说明它在Mysqlmysql中的工作原理以及这两种方法之间的差异。

避免在查询中使用 @ ,因为你无法看到是否出现真正的错误,这是一种不好的做法。

首先,这在两个方面都是一种不好的做法,因为即使你使用mysqlimysql_real_escape_string()转义变量,它也不安全。而不是使用这个使用mysqli_real_escape_string()准备好的陈述。

使用PDO

mysqli

代码

// mysqli connection
$con = mysqli_connect('host', 'username', 'password', 'database_name');