Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 在MySQL数据库中检查唯一标识时出现问题_Php_Mysql_String_Unique_Identifier - Fatal编程技术网

Php 在MySQL数据库中检查唯一标识时出现问题

Php 在MySQL数据库中检查唯一标识时出现问题,php,mysql,string,unique,identifier,Php,Mysql,String,Unique,Identifier,我试图验证MySQL列中的字符串是否唯一。以下是代码示例: <?php $con = mysql_connect("hostname", "username", "password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("table_name", $con); if (!mysql_num_rows(mysql_query("SELECT * FROM table_n

我试图验证MySQL列中的字符串是否唯一。以下是代码示例:

<?php
$con = mysql_connect("hostname", "username", "password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("table_name", $con);


if (!mysql_num_rows(mysql_query("SELECT * FROM table_name WHERE unique_string = '123456' 
LIMIT 1"))) {

die('This string is not unique.');
}
mysql_close($con);
?>

通常不明智的做法是将函数调用按现有方式链接起来。尤其是数据库调用。mysql_*()函数期望传入某些内容,如语句句柄。但如果出现问题,它们可以返回布尔值FALSE而不是句柄。这个错误被传递,而不是一个句柄,然后所有的东西都被破坏了

通常的规则是,始终假定您的查询会以某种方式失败,并进行防御性编程:

$sql = "SELECT ....";
$result = mysql_query($sql) or die(mysql_error());
$rows = mysql_num_rows($result);
if ($row !== 0) then
    die("Not unique");
}
除此之外,您的查询语句看起来确实语法正确。为什么不看看它回来了

$row = mysql_fetch_assoc($result);
var_dump($row);
看看到底匹配了什么。也许你在表格中没有这个值,并且错误地认为它在那里

Select count(*) from yourtable where mycolumn = 'unique string'

现在,您应该测试它是否返回了1,您是否也将“table_name”用于DB。这是正确的吗?否则,mysql_select_db()将失败,任何查询也将失败,因为未选择任何数据库。

是的,这是我的编辑错误。我做了mysql\u select\u db(“db\u name”,$con);