Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP SQL语句不起作用,但直接从phpmyadmin起作用_Php_Sql_Mysqli - Fatal编程技术网

PHP SQL语句不起作用,但直接从phpmyadmin起作用

PHP SQL语句不起作用,但直接从phpmyadmin起作用,php,sql,mysqli,Php,Sql,Mysqli,我已经看到了很多关于这个的问题,但是我还没有找到我的答案。我有一个PHP,用户在其中输入一个票号,信息将存储在一个数据库中,但是我想检查另一个数据库和表,以检查该数字是否在表中。输入是一个字符串,我尝试了intval$ticket,但仍然不起作用 $ticketQry = mysqli_prepare($con,"select count(*) from <database2>.mantis_bug_table where id =?"); mysqli_stmt_b

我已经看到了很多关于这个的问题,但是我还没有找到我的答案。我有一个PHP,用户在其中输入一个票号,信息将存储在一个数据库中,但是我想检查另一个数据库和表,以检查该数字是否在表中。输入是一个字符串,我尝试了intval$ticket,但仍然不起作用

    $ticketQry = mysqli_prepare($con,"select count(*) from <database2>.mantis_bug_table where id =?");
    mysqli_stmt_bind_param($ticketQry,'i',intval($Ticket));
    mysqli_execute($ticketQry);
    var_dump($ticketQry);

    Result:
    object(mysqli_stmt)#7 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(1) ["field_count"]=> int(1) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(6) }
我发现infected_rows int-1表示查询有问题,但我一辈子都无法解决

我尝试添加一个mysqli_select_db语句来在两个数据库之间切换,是的,当我这样做时,我从SQL语句中删除了它,但没有成功

现在,如果我在phpmyadmin中放入相同的参数和sql语句,它就可以正常工作了。我也试着把它绑成一根绳子

如果我在phpmyadmin中运行它,结果是1。因此,我再次知道这在phpmyadmin中起作用,但不是我的PHP脚本。

您需要调用mysqli\u stmt\u store\u result来缓冲准备语句的结果

php > $db = new mysqli('localhost', 'username', 'password', 'dbname');
php > $stmt = $db->prepare("SELECT COUNT(*) from t_users where username = ?");
php > $username = 'barmar';
php > $stmt->bind_param("s", $username);
php > $stmt->execute();
php > var_dump($stmt);
object(mysqli_stmt)#1 (10) {
  ["affected_rows"]=> // affected_rows is initially -1
  int(-1)
  ["insert_id"]=>
  int(0)
  ["num_rows"]=> // num_rows is initially 0
  int(0)
  ["param_count"]=>
  int(1)
  ["field_count"]=>
  int(1)
  ["errno"]=>
  int(0)
  ["error"]=>
  string(0) ""
  ["error_list"]=>
  array(0) {
  }
  ["sqlstate"]=>
  string(5) "00000"
  ["id"]=>
  int(1)
}
php > $stmt->store_result();
php > var_dump($stmt);
object(mysqli_stmt)#1 (10) {
  ["affected_rows"]=> // affected_rows is now 1
  int(1)
  ["insert_id"]=>
  int(0)
  ["num_rows"]=> // num_rows is now 1
  int(1)
  ["param_count"]=>
  int(1)
  ["field_count"]=>
  int(1)
  ["errno"]=>
  int(0)
  ["error"]=>
  string(0) ""
  ["error_list"]=>
  array(0) {
  }
  ["sqlstate"]=>
  string(5) "00000"
  ["id"]=>
  int(1)
}

$con中包含数据库信息,因此不确定为什么需要使用数据库名称周围是否有其他名称?这不是有效的MySQL语法。@Maxqueue,因为我想我应该说我正在连接本地主机,然后使用mysqli_select_db,@Barmar,不,我没有数据库名称,我会得到一个错误,我的结果现在显示错误,只是运行查询时出现问题,而不是SQL语法错误。